Tkinter标签不显示Imag

2024-05-07 22:45:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我想学点tkinter。我不能让tkinter显示图标。我不知道哪里出了问题。它不会产生任何误差,而且它尊重图像的大小,但它是不可见的。我在网上找到的所有东西都告诉我添加第二个引用以防止从python收集垃圾,但不知何故这并不是诀窍。 下面是我的代码出错的部分:

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, image = self.icon)
        self.icon_size.pack(side=LEFT)

root = Tk()


app = GUI(root)

root.mainloop()

Tags: fromimageimportselfmastersizetkinterbar
3条回答

向Tkinter小部件添加PhotoImage或其他图像对象时,必须保留对该图像对象的引用。如果你不这样做,图像就不会一直出现。

决定here

对所有未来的读者来说,我的问题在于透明度。从图像中移除alpha通道修复了它。

出于某种原因(我不知道确切的原因),您必须将图像对象锚定到小部件中才能显示它。因此,请尝试对代码进行以下更改:

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()

祝你好运!

相关问题 更多 >