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

时间:2021-05-13 10:51:18

标签: python tkinter tkinter-canvas

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

from PIL import Image, ImageTk
import tkinter as tk

all_pfps = [
    r"Pfps\Red Pfp.png",
    r"Pfps\Yellow Pfp.png",
]

class Login():
    def __init__(self):
        self.login_root = tk.Tk()
        
        background = Image.open(r"Back -drops -grounds\Darker Background.png")
        render_background = ImageTk.PhotoImage(background)
        pfp = Image.open(all_pfps[0])
        render_pfp = ImageTk.PhotoImage(pfp)
        
        self.backdrop = tk.Canvas(self.login_root, height = 1080, width = 1920, bg = "dark red")
        self.backdrop.create_image(645, 525, image = render_background)
        self.backdrop.create_image(1757, 163, image = render_pfp)
        
        
        
        self.profile_pic = tk.Menubutton(master = self.login_root, text = "Welcome to MARVEL Battlefront")
        self.profile_pic.menu = tk.Menu(master = self.profile_pic, tearoff = 0)
        self.profile_pic["menu"] = self.profile_pic.menu
        self.profile_pic.menu.add_checkbutton(label = "Red", command = lambda: self.set_pfp(0))
        self.profile_pic.menu.add_checkbutton(label = "Yellow", command = lambda: self.set_pfp(1))
        self.profile_pic.pack()
        self.backdrop.create_window(50, 50, window = self.profile_pic)
        
        
        self.backdrop.pack()
        self.login_root.mainloop()
        
    def set_pfp(self, profile_pic: int):
        pfp = Image.open(all_pfps[profile_pic])
        render_pfp = ImageTk.PhotoImage(pfp)
        
        self.backdrop.create_image(1757, 163, image = render_pfp)

Login()

现在,当单击菜单按钮时,图片应该会发生变化。但它没有。这是为什么?

0 个答案:

没有答案