Tkinter 是一个流行的 Python GUI 库,在函数中创建时偶尔会遇到显示图像的问题。此行为源于 Tkinter 处理图像引用等局部变量的方式。
考虑以下成功显示图像的代码:
import tkinter root = tkinter.Tk() canvas = tkinter.Canvas(root) canvas.grid(row = 0, column = 0) photo = tkinter.PhotoImage(file = './test.gif') canvas.create_image(0, 0, image=photo) root.mainloop()
但是,在创建时类方法中的图像,图像消失。
import tkinter class Test: def __init__(self, master): canvas = tkinter.Canvas(master) canvas.grid(row = 0, column = 0) photo = tkinter.PhotoImage(file = './test.gif') canvas.create_image(0, 0, image=photo) root = tkinter.Tk() test = Test(root) root.mainloop()
出现此问题是因为局部变量 photo 表示对图像的引用。在类方法中,此引用会丢失,因为执行方法后照片超出范围。
要解决此问题,请在类实例中保存对照片的持久引用:
import tkinter class Test: def __init__(self, master): canvas = tkinter.Canvas(master) canvas.grid(row = 0, column = 0) self.photo = tkinter.PhotoImage(file = './test.gif') canvas.create_image(0, 0, image=self.photo) root = tkinter.Tk() test = Test(root) root.mainloop()
通过将引用存储在 self.photo 中,它在类实例的生命周期内持续存在,确保图像保持可见。
以上是为什么在类方法中创建 Tkinter 图像时会消失?的详细内容。更多信息请关注PHP中文网其他相关文章!