sweating_...@yahoo.com wrote: > I am working on an image project, and I can display my image in main(). I mean, I can load my image in my main(). Needless, it is awkward. I am trying to load my image with a function, but got an empty image window popped up, no image content loaded. Please take a look at code: > > > > rom Tkinter import * > > def load_img(win): > img = PhotoImage(file="xxx.gif") > Label(win, image=img).pack() > > win = Tk() > load_img(win) > win.mainloop() > > Somebody can help me out? Thanks!
It's not your fault, there's an odd quirk in the library: you have to keep a reference of the PhotoImage instance around to prevent the image from being garbage-collected. For example from Tkinter import * def load_img(win): global img img = PhotoImage(file="xxx.gif") Label(win, image=img).pack() win = Tk() load_img(win) win.mainloop() will work because img is now a global that is not deleted until the script ends (but don't run the function twice -- then the first image will disappear). -- https://mail.python.org/mailman/listinfo/python-list