Python 如何在单击按钮时更改图像?

Python 如何在单击按钮时更改图像?,python,tkinter,tkinter-canvas,Python,Tkinter,Tkinter Canvas,我想做一些可以改变画面的东西。当用户点击按钮时,图片应该会改变。如果我以前加载过图像,它就可以工作,但是当gui运行时,我无法更改图像 从PIL导入图像,ImageTk 将tkinter作为tk导入 所有PFP=[ r“Pfps\Red Pfp.png”, r“Pfps\Yellow Pfp.png”, ] 类登录名(): 定义初始化(自): self.login_root=tk.tk() 背景=Image.open(r“Back-drops-grounds\dark background.pn

我想做一些可以改变画面的东西。当用户点击按钮时,图片应该会改变。如果我以前加载过图像,它就可以工作,但是当gui运行时,我无法更改图像

从PIL导入图像,ImageTk
将tkinter作为tk导入
所有PFP=[
r“Pfps\Red Pfp.png”,
r“Pfps\Yellow Pfp.png”,
]
类登录名():
定义初始化(自):
self.login_root=tk.tk()
背景=Image.open(r“Back-drops-grounds\dark background.png”)
render_background=ImageTk.PhotoImage(背景)
pfp=Image.open(所有pfp[0])
render_pfp=ImageTk.PhotoImage(pfp)
self.background=tk.Canvas(self.login_root,高度=1080,宽度=1920,bg=“深红色”)
self.background.create_image(645525,image=render_background)
self.background.create_image(1757163,image=render_pfp)
self.profile_pic=tk.Menubutton(master=self.login_root,text=“欢迎来到惊奇漫画前线”)
self.profile\u pic.menu=tk.menu(master=self.profile\u pic,tearoff=0)
self.profile_pic[“menu”]=self.profile_pic.menu
self.profile\u pic.menu.add\u checkbutton(label=“Red”,command=lambda:self.set\u pfp(0))
self.profile\u pic.menu.add\u checkbutton(label=“Yellow”,command=lambda:self.set\u pfp(1))
self.profile_pic.pack()
self.background.create_window(50,50,window=self.profile_pic)
self.background.pack()
self.login\u root.mainloop()
def set_pfp(自身、配置文件图片:int):
pfp=Image.open(所有pfp[配置文件图片])
render_pfp=ImageTk.PhotoImage(pfp)
self.background.create_image(1757163,image=render_pfp)
登录()

现在,当你点击菜单按钮时,画面应该会改变。但事实并非如此。这是为什么?

这回答了你的问题吗?