
当您尝试在第一个版本中使用图像时,该图像将被垃圾回收。
effbot很古老,但是下面的代码片段很不错:
您必须在Python程序中保留对图像对象的引用,方法是将其存储在全局变量中,或者将其附加到另一个对象。
在第二个版本中,映像是在全局级别上声明的。
这是另一个演示此问题的示例,您希望它也可以工作,毕竟在函数中使用相同的代码
不起作用:
import tkinter as tkfrom PIL import ImageTkroot = tk.Tk()def make_button(): b = tk.Button(root) image = ImageTk.PhotoImage(file="1.png") b.config(image=image) b.pack()make_button()root.mainloop()
起作用:
import tkiner as tkfrom PIL import ImageTkroot = tk.Tk()def make_button(): b = tk.Button(root) image = ImageTk.PhotoImage(file="1.png") b.config(image=image) b.image = image b.pack()make_button()root.mainloop()
为什么?中的变量
make_button是该函数的局部变量。如果您在类中遇到此类问题,则具有相同的想法。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)