【问题标题】:Image not showing in Tkinter Window [duplicate]图像未显示在 Tkinter 窗口中 [重复]
【发布时间】:2017-10-02 16:34:39
【问题描述】:

我正在尝试在窗口中显示图像。我尝试了两种方法,使用类和单个 sn-p。 我很困惑为什么这显示正确的输出:

from Tkinter import *
from PIL import ImageTk, Image

root = Tk()
picture="path/image.jpg"
image = Image.open(picture).resize((350, 350), Image.ANTIALIAS)
print(image)
pic = ImageTk.PhotoImage(image)
panel = Label(root, image = pic)
panel.grid(sticky="news")
root.mainloop()

但不是下面那个?

from Tkinter import *
from PIL import ImageTk, Image

class DisplayImage():

    def __init__(self, root):
        self.root = root

    def stoneImg(self, picture="path/default_image.png"):
        image = Image.open(picture).resize((350, 350), Image.ANTIALIAS)
        pic = ImageTk.PhotoImage(image)

        panel = Label(self.root, image=pic)
        panel.grid(sticky="news")

if __name__ == '__main__':
    root = Tk()
    DisplayImage(root).stoneImg()
    root.mainloop()

【问题讨论】:

    标签: python python-2.7 tkinter


    【解决方案1】:

    不同之处在于,在您的第二个示例中,图片仅由局部变量引用,该局部变量在函数结束时消失。垃圾收集在 Tkinter 中的工作有点奇怪,因为所有与 GUI 相关的对象都存在于嵌入式 Tcl 解释器中,不受 Python 的控制。

    简单的解决方案是添加像panel.image = pic 这样的行,以便对图像的引用与小部件本身一样存在。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-10
      • 2018-09-16
      • 2017-10-17
      • 1970-01-01
      • 2019-03-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多