当我使用此代码在框架内的按钮内执行图像时,它可以正常工作:
image2= PhotoImage(file="questionmark.gif")
f3buttonQ=Button(f3,image=image2, command = findcustomer).place(x=425,y=10)
但是,当我只想在根框架中使用它时,我使用以下代码:
image2= PhotoImage(file="questionmark.gif")
f3buttonQ=Button(root, image=image2,command = findcustomer).place(x=450,y=110)
图像不会加载到后一段代码中,两者之间的唯一区别就是第一段中的f3。感谢。
更新
所以我设法通过使用这个命令来运行:
photo2= tk.PhotoImage(file="questionmark.gif")
button = Button(image=photo2,command = findcustomer).place(x=450,y=110)
当我单独运行时,图像完全加载到按钮上,但当我在它下面添加这一行时,它们都会再次变为空白并且图像未加载:
f3findProduct=Button(image=photo2, command = findproduct).place(x=110,y=190)
答案 0 :(得分:1)
简短的故事是您的图像被垃圾收集并且不再显示。你必须保留它的参考。
来自effbot的:
将PhotoImage或其他Image对象添加到Tkinter小部件时,必须保留对图像对象的引用。如果你不这样做, 图像不会一直显示出来。
问题是Tkinter / Tk接口不处理引用 到图像对象正确; Tk小部件将保存对该引用的引用 内部对象,但Tkinter没有。当Python的垃圾收集器 抛弃Tkinter对象,Tkinter告诉Tk释放图像。 但由于图像由小部件使用,因此Tk不会破坏它。不 完全。它只是使图像空白,完全成像 透明...
解决方案是确保保留对Tkinter的引用 对象,例如通过将其附加到窗口小部件属性:
integrate(0,5,10, function(x){
return x*x;
})
您必须为需要显示的每张图片执行此操作