繁体   English   中英

Tkinter 标签不显示图像

[英]Tkinter Label does not show Image

我正在尝试学习一些 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()

当您将 PhotoImage 或其他 Image 对象添加到 Tkinter 小部件时,您必须保留自己对图像对象的引用。 如果不这样做,图像将不会始终显示。

决定在这里

出于某种原因(我不明白为什么),您必须将图像对象锚定到小部件中才能显示。 因此,在您的代码中尝试以下更改:

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

祝你好运!

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM