我期望以下两个脚本具有相同的输出。

但是执行脚本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/

10-13 00:48