tkinter背景不显示

时间:2018-11-23 21:59:30

标签: python tkinter

我制作了一个名为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()

1 个答案:

答案 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()