执行此代码后,我想在程序中输入图片
from tkinter import *
root = Tk()
image1 = PhotoImage(file='dog.gif')
label1 = Label(root, image=image1)
label1.pack()
root.mainloop()
图像会出现,但是当我执行此代码时
from tkinter import *
class Image():
def __init__(self, master):
self.master = master
self.display_image()
def display_image(self):
self.image = PhotoImage(file='dog.gif')
self.label1 = Label(self.master, image=self.image)
self.label1.pack()
if __name__ == '__main__':
root = Tk()
Image(root)
root.mainloop()
将出现窗口,但未显示图像
答案 0 :(得分:0)
如果创建图像时未在某个地方保留强引用,则会在Python的垃圾收集器和Tkinter之间造成冲突:Label
中存储的引用会阻止完全破坏,并且图像将为空白。
此外,请注意不要覆盖诸如Image
之类的基类,您最好重命名自己的类My_Image
一个简单的解决方法是创建一个包含图像的全局变量:
from tkinter import *
class My_Image():
def __init__(self, master):
self.master = master
self.display_image()
def display_image(self):
self.label1 = Label(self.master, image=label1_img)
self.label1.pack()
root = Tk()
label1_img = PhotoImage(file='dog.gif')
My_Image(root)
root.mainloop()
或者您甚至可以创建一个全局变量来存储My_Image实例:
if __name__ == '__main__':
root = Tk()
img = My_Image(root)
root.mainloop()