带有图像的选项菜单的 Tkinter 更新按钮

问题描述

我在一个文件夹中有三张图像:Image1、Image2、Image3,我创建了一个包含如下图像的选项菜单

enter image description here

如果我插入另一个 image4 而不是 image1 并单击更新按钮,那么我有

enter image description here

我无法使用更新文件列表按钮更新图像。我的代码在下面,我不知道如何更新 refresh_list 函数

import tkinter as tk
import os

root = tk.Tk()

root.geometry("500x500")

tkvar = tk.StringVar()

variable = tk.StringVar()

def change_image(*args):
    # Change image of label accordingly
    label.config(image=photos[int(variable.get()[0])])

pathimages = 'img/' 
files = [os.path.splitext(filename)[0] for filename in os.listdir(pathimages)]


OptionMenu1 = tk.OptionMenu(root,variable,*files)
OptionMenu1.config(font=("Times",16,"italic"))
OptionMenu1["menu"].config(font=("Times","italic"))
OptionMenu1.place(x=100,y=130)

variable.trace("w",change_image)

photos = os.listdir("img/")    
photos = list(filter(lambda f: f.endswith('.png'),photos))

photo0 = (photos[0])
photo1 = (photos[1])
photo2 = (photos[2])



# List of photoimages for each image
photos =(tk.PhotoImage(file='img/'+photo0),tk.PhotoImage(file='img/'+photo1),tk.PhotoImage(file='img/'+photo2))
label = tk.Label(root,image=photos[0])
label.place(x=100,y=170)

def refresh_list():
    pathimages2 = 'img/'
    new_list = [os.path.splitext(filename)[0] for filename in os.listdir(pathimages2)]
    OptionMenu1['menu'].delete(0,'end')
    for item in new_list:             
        OptionMenu1['menu'].add_command(label=item,command=tk._setit(tkvar,item))
        

update_button2 = tk.Button(root,text="Update files list",command=refresh_list,bg='lightgreen',width=25,font=("bold",15))
update_button2.place(x=100,y=25)

root.mainloop()

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...