pythonuser-interfacetkinterphotoimage

cannot associate image to tkinter label


I am trying to display an image to a tkinter GUI using tkinter.Label() widget. The procedure seems simple and straightforward, but this code doesn't work!

code:

import Tkinter as tk
import Image, ImageTk, sys

filename = 'AP_icon.gif'
im = Image.open(filename) # Image is loaded, because the im.show() works

tkim = ImageTk.PhotoImage(im)

root = tk.Tk()

label = tk.Label(root, image = tkim) # Here is the core problem (see text for explanation)
label.image = tkim # This is where we should keep the reference, right?
label.grid (row = 0, column = 0)

tk.Button(root, text = 'quit', command = lambda: sys.exit()).grid(row = 1, column = 1)
root.mainloop()

When we execute this code, it doesn't compile, giving an error:

TclError: image "pyimage9" doesn't exist

When I define label without its parent root, No compilation error occurs, but the GUI does not display any image!

Can anyone identify what could be the issue?


Solution

  • This problem happens when we attempt to run the above code in Ipython. And it can be solved by changing the line

    root = tk.Tk() to
    
    root = tk.Toplevel()