Tkinter 使用OptionMenu事件更改tk.标签图像

Tkinter 使用OptionMenu事件更改tk.标签图像,tkinter,optionmenu,photoimage,Tkinter,Optionmenu,Photoimage,我一直在寻找答案,但似乎以前没有人遇到过这个问题。 我不知道我错过了什么。下面是代码的简化版本,存在相同的问题: app = tk.Tk() location = 'C:\\Users\\User\\Desktop' image = location + '\\ab.PNG' image_final = tk.PhotoImage(file = image) var = tk.StringVar(app) list_file=['1','2'] def do(event):

我一直在寻找答案,但似乎以前没有人遇到过这个问题。 我不知道我错过了什么。下面是代码的简化版本,存在相同的问题:

app = tk.Tk()

location  = 'C:\\Users\\User\\Desktop'


image = location + '\\ab.PNG'
image_final = tk.PhotoImage(file = image)
var = tk.StringVar(app)
list_file=['1','2']



def do(event):

    if var.get() == 1:
        image = location + '\\cd.PNG'
    else:
        image = location + '\\ab.PNG'
    image_final = tk.PhotoImage(file = image)

    a.config(image = image_final)




style_optionMenu = ttk.Style()
style_optionMenu.configure('style_option.TMenubutton', background = "green", foreground = "white")
option_athletes = ttk.OptionMenu(app,var,list_file[0],*list_file, style = 'style_option.TMenubutton', command = do )
option_athletes.config(width = 20)
option_athletes.pack()    



a= tk.Label(master = app, image = image_final)
a.pack()


app.mainloop()
问题是,尽管显示了第一个图像,但每当我更改OptioMenu中的值时,图像就会消失,不再是收割者。 其他一切(不在本示例代码中)都可以正常运行。 有没有人有任何线索或知道更好的替代方法?
多谢各位

这与其他Tkinter消失图像问题完全相同:您仅通过局部变量引用图像,因此它在可见之前会被垃圾收集。将引用存储在某个地方,其生存期至少与显示它的小部件相同
a.photo=image\u final
也许吧。当然……通过使用全局on image\u final解决了这个问题。非常感谢你!