我期望以下两个脚本具有相同的输出。
但是执行脚本1 时,按钮上没有图像。但是,脚本2 效果很好。
脚本1
from Tkinter import *
class fe:
def __init__(self,master):
self.b=Button(master,justify = LEFT)
photo=PhotoImage(file="mine32.gif")
self.b.config(image=photo,width="10",height="10")
self.b.pack(side=LEFT)
root = Tk()
front_end=fe(root)
root.mainloop()
脚本2
from Tkinter import *
root=Tk()
b=Button(root,justify = LEFT)
photo=PhotoImage(file="mine32.gif")
b.config(image=photo,width="10",height="10")
b.pack(side=LEFT)
root.mainloop()
最佳答案
对图像对象的唯一引用是局部变量。当__init__
退出时,局部变量被垃圾回收,因此图像被破坏。在第二个示例中,由于镜像是在全局级别创建的,因此它永远不会超出范围,因此也不会进行垃圾回收。
要解决此问题,请保存对图像的引用。例如,使用photo
代替self.photo
。
关于python - 按钮上的图像,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4297949/