我是python的新手。我已经尝试过如何显示Texbox,图像和按钮的代码。但图像不显示 请纠正我的代码以显示图像!
我的代码:
import Tkinter
from Tkinter import *
class myproject(Tkinter.Tk):
def __init__(self,parent):
Tkinter.Tk.__init__(self)
self.button2()
self.text()
self.image()
def button2(self):
button2 = Tkinter.Button(self, text = "hello")
button2.grid(column=5,row=7)
def text(self):
text = Tkinter.Text(self, height=3, width=31)
text.grid(column=1,row=3)
text.insert(END, "Wiilliam Skakespeare")
def image(self):
logo = PhotoImage(file="linux.gif")
w1 = Tkinter.Label(self, image=logo)
w1.grid(column=5,row=7)
app = myproject(None)
app.mainloop()
答案 0 :(得分:1)
您需要将PhotoImage保存为类变量,以便引用可以保留在内存中。 image()
的以下方法应该有效:
def image(self):
self.logo = Tkinter.PhotoImage(file="linux.gif")
w1 = Tkinter.Label(self, image=self.logo)
w1.grid(column=5,row=7)
此页面提供了更深入的解释:Effbot PhotoImage。具体这一节:
注意:当Python对垃圾收集PhotoImage对象时(例如 当您从在本地存储图像的函数返回时 变量),即使正在显示图像,图像也会被清除 Tkinter小部件。
为避免这种情况,程序必须对图像对象保留额外的引用。