I\'m trying to learn some tkinter. I can\'t get tkinter to display an icon. I don\'t know where it goes wrong. It does not produce any error and it respects the size of the
For some reason (I don't understand exactly why) you must anchor the image object into the widget in order for it to display. Therefore try the following change at your code:
from Tkinter import *
from PIL import Image, ImageTk
class GUI:
def __init__(self, master):
frame = Frame(master)
frame.pack()
#status bar
self.bar = Frame(root, relief=RIDGE, borderwidth=5)
self.bar.pack(side=TOP)
self.iconPath = 'data/icons/size.png'
self.icon = ImageTk.PhotoImage(Image.open(self.iconPath))
self.icon_size = Label(self.bar)
self.icon_size.image = self.icon # <== this is were we anchor the img object
self.icon_size.configure(image=self.icon)
self.icon_size.pack(side=LEFT)
root = Tk()
app = GUI(root)
root.mainloop()
Good Luck!
For all future readers, in my case the problem lied with transparency. Removing the alpha channel from the image fixed it.
When you add a PhotoImage or other Image object to a Tkinter widget, you must keep your own reference to the image object. If you don’t, the image won’t always show up.
Decision here