我试图在一个tkinter类对象中设置一个开始屏幕的背景图像,但是当我运行启动应用程序的代码时,我得到以下错误图像"pyimage6"不存在。我研究了一下,发现这是因为python正在删除对图像的引用,所以我做了一个变量来存储它,但是在运行代码时仍然发生错误。
什么是奇怪的是,当我删除两个函数和按钮在下面的代码工作?我不确定如何保留创建新窗口的两个函数,并保留画布小部件的背景图像。
第10行出现错误错误:TclError: image "pyimage6"不存在
下面的开始屏幕和应用程序初始化代码
class Start_Screen:
def __init__(self, master):
self.master = master
image = PIL.Image.open('start_screen_pic.png')
WIDTH, HEIGHT = image.size
self.master.geometry('{}x{}'.format(WIDTH, HEIGHT))
self.canvas = tk.Canvas(self.master, width=WIDTH, height=HEIGHT)
self.canvas.pack(side='top', fill='both', expand='yes')
self.start_img = ImageTk.PhotoImage(Image.open("start_screen_pic.png"))
self.canvas.create_image(0, 0, image=self.start_img, anchor='nw')
self.canvas.pack()
self.button1 = tk.Button(self.master, text = 'Yelp review statistics', width = 25, command = self.Yelp_screen)
self.button2 = tk.Button(self.master, text = 'Instagram post analysis', width = 25, command = self.Insta_screen)
self.button1.pack()
self.button2.pack()
def Yelp_screen(self):
self.newWindow = tk.Toplevel(self.master)
self.app = Yelp_screen_start(self.newWindow)
def Insta_screen(self):
self.newWindow = tk.Toplevel(self.master)
self.app = Insta_screen_start(self.newWindow)
root = tk.Tk()
app = Start_Screen(root)
root.mainloop()
Ok,所以我把它复制到jupyter笔记本中的新工作簿中,然后重新运行脚本,由于某种原因,它在新的jupyter笔记本中使用完全相同的代码,而不是在旧的笔记本中。我不知道为什么在旧的工作簿中会发生这种情况,但现在它在新的工作簿中工作。对不起,我没有一个确切的答案,为什么它会发生