tkinter canvas image not displaying
Solution 1
Escape backslashes in path string correctly. (or use
r'raw string literal'
).Prevent PhotoImage object being garbage collected.
specify the filename using
file=...
option.
def start(root):
startframe = tkinter.Frame(root)
canvas = tkinter.Canvas(startframe,width=1280,height=720)
startframe.pack()
canvas.pack()
# Escape / raw string literal
one = tkinter.PhotoImage(file=r'images\one.gif')
root.one = one # to prevent the image garbage collected.
canvas.create_image((0,0), image=one, anchor='nw')
UPDATE
The two statements one = ...
and root.one = one
can be merged into one statement:
root.one = one = tkinter.PhotoImage(r'images\one.gif')
Solution 2
How about canvas.update()
? I was suffering a similar problem. I am using grid, so instead of .pack
I needed to use .update
.
Related videos on Youtube
Comments
-
Thedudxo over 1 year
I have a simple canvas being created in a function, and i would like an image displayed on the canvas.
def start(root): startframe = tkinter.Frame(root) canvas = tkinter.Canvas(startframe,width=1280,height=720) startframe.pack() canvas.pack() one = tkinter.PhotoImage('images\one.gif') canvas.create_image((0,0),image=one,anchor='nw')
when i run the code i get a blank 1280x720 window, no image.
i have looked at the following website: http://effbot.org/pyfaq/why-do-my-tkinter-images-not-appear.htm but i do not understand how to apply their example to my situation (i dont know what to create a reference to or how to create a reference, if that is my problem). I have also looked at some stack overflow questions but they did not help either.