【问题标题】:Tkinter Label does not show ImageTkinter 标签不显示图像
【发布时间】:2012-10-30 23:16:25
【问题描述】:

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

【问题讨论】:

  • 你的缩进搞砸了。
  • 通过固定缩进,您的代码适用于我 - 它在标签中显示图像(JPEG 和 PNG)。
  • 我修复了缩进。代码仍然没有为我显示图像。
  • 您是否尝试过使用其他图片?

标签: python tkinter


【解决方案1】:

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

决定here

【讨论】:

【解决方案2】:

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

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

祝你好运!

【讨论】:

  • “为什么”是因为 python 垃圾回收会破坏图像,除非有永久引用它。
  • @BryanOakley 据我所知,已经有一个永久参考(self.icon)。这里的第一个语句是错误的,我只是在 Label 本身没有锚点的情况下进行了测试,它工作正常。
【解决方案3】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-10
    • 1970-01-01
    • 2017-08-26
    • 2016-12-16
    • 1970-01-01
    • 2017-10-14
    相关资源
    最近更新 更多