Image
The Image element displays an image in your window provided they are in PNG, GIF, PPM/PGM format. JPGs cannot be shown because tkinter does not naively support JPGs. You can use the Python Imaging Library (PIL) package to convert your image to PNG prior to calling PySimpleGUI if your images are in JPG format.
A general discussion of images and image formats used in PySimpleGUI can be found in the images section.
Events
If events are enabled for the Image
element, then the element's key will be returned as an event when the image is clicked with the left mouse button.
Values Dictionary
No entry is in the values dictionary for Image
elements.
Specifying the Image
Reminder - As discussed in the section on image formats, the tkinter port of PySimpleGUI only supports PNG & GIF format, not JPG.
There are 3 parameters that can be used to specify the image to be displayed. You can also create the Image
in your layout without specifying any image to be initially displayed, and then use the update
method later to display an image.
These 3 parameters specify the image:
source
- A "union" of the other 2 parameters. The type passed in will determine if it's a filename, Base64 string or raw imagefilename
- A string representing the location on disk of your imagedata
- Either a Base64 encoded byte string or a byte string (an unencoded "raw" image)
Resizing Images
While you cannot resize your image to an arbitrary size, you can increase or decrease the size of your image to be displayed. For example, if you're displaying the built-in emoji used in the example layout above, you'll find that this image has pixel size of 56 x 56 pixels. The size
parameter will not scale up/down the image to a specific size, for example (200,200) pixels. The size
parameter changes the size the Image
element will use in your layout, but will not change the scale of the image itself.
subsample
& zoom
Parameters - Rough Scaling
Two parameters can be used to provide a rough scaling of your image:
subsample
- decreases the image scale by multiplying the size by 1/subsample
zoom
- increaes the image scale by multiplying the size byzoom
For example, if you want your image to be 1/2 the size it normally has, set subsample=2
. If you want the image to be twice the size, use zoom=2
. You can combine these 2 parameters as well. To get 2/3 the original size, set zoom=2, subsample=3
This layout demonstrates using these scaling parameters:
layout = [[sg.Image(sg.EMOJI_BASE64_READING)],
[sg.Image(sg.EMOJI_BASE64_READING, zoom=2)],
[sg.Image(sg.EMOJI_BASE64_READING, subsample=2)],
[sg.Image(sg.EMOJI_BASE64_READING, subsample=3)],
[sg.Image(sg.EMOJI_BASE64_READING, zoom=2, subsample=3)]]
Scaling to Specific Size
To resize to a specific pixel dimension, you can use the PIL package. There are numerous Demo Programs that provide code demonstrating this operation.
Images As Buttons
You can easily get a button-like behavior by enabling events for an Image
element. If events are enabled, then when you click the image, you'll receive and event back from windows.read
that equal to the key
for the Image
element.