我制作了一个名为start()
的新方法,并将我的mainloop()
粘贴到了那里,但是它不再显示图片了。如何解决?
class Beerpong():
def __init__(self):
self.__main = Tk()
self.__main.title("Beerpong made by: x")
#Making background for game
bg_image = PhotoImage(file="beerpong_table.gif")
bg = Label(self.__main,image=bg_image)
bg.pack()
def start(self):
self.__main.mainloop()
def main():
ui = Beerpong()
ui.start()
main()
答案 0 :(得分:1)
问题是在PhotoImage
方法中创建的__init__()
在返回时被销毁,因为它存储在局部变量bg_image
中(并且局部变量在函数退出时消失)
以下是我发现的一些documentation对此进行了描述(在示例代码中搜索“ # keep a reference!
”注释):
因此,这是将推荐方法应用于自己的代码的方法(通过使其成为方法返回后仍然存在的属性):
from tkinter import *
class Beerpong():
def __init__(self):
self.__main = Tk()
self.__main.title("Beerpong made by: x")
#Making background for game
bg_image = PhotoImage(file="beerpong_table.gif")
bg = Label(self.__main,image=bg_image)
bg.image = bg_image # Save a reference to the PhotoImage.
bg.pack()
def start(self):
self.__main.mainloop()
def main():
ui = Beerpong()
ui.start()
main()