python版本:2.7
我正在尝试创建一个只使用tkinter加载2个图像的函数。我的代码是:
from Tkinter import *
class ImageTest(object):
def __init__(self):
self.window = Tk()
self.window.geometry('300x300')
testImg = PhotoImage(file='test.gif')
label1 = Label(self.gameWindow, image=testImg )
label1.pack()
label2 = Label(self.gameWindow, image=testImg )
label2.pack()
#self.init_test_screen()
self.window.mainloop()
def init_test_screen(self):
testImg = PhotoImage(file='test.gif')
label1 = Label(self.gameWindow, image=testImg )
label1.pack()
label2 = Label(self.gameWindow, image=testImg )
label2.pack()
imagetest = ImageTest()
这可以按预期工作,但我想要做的是将label1和label2的初始化委托给init_test_screen()。如果我将 init 更改为:
def __init__(self):
self.window = Tk()
self.window.geometry('300x300')
#testImg = PhotoImage(file='test.gif')
#label1 = Label(self.gameWindow, image=testImg )
#label1.pack()
#label2 = Label(self.gameWindow, image=testImg )
#label2.pack()
self.init_test_screen()
self.window.mainloop()
不再显示2张图像。关于为什么的任何想法?
答案 0 :(得分:2)
执行“unit_test screen”后,对“testIng”的引用将丢失。 只需使用“self”将其存储在对象中:
from Tkinter import *
class ImageTest(object):
def __init__(self):
self.window = Tk()
self.window.geometry('300x300')
self.init_test_screen()
self.window.mainloop()
def init_test_screen(self):
self.testImg = PhotoImage(file='test.gif')
label1 = Label(self.window, image=self.testImg )
label1.pack()
label2 = Label(self.window, image=self.testImg )
label2.pack()
imagetest = ImageTest()