首页 > 解决方案 > 更改菜单选项时如何更新从 OptionMenu 获取值的列表 - Python

问题描述

所以我正在编写一个 GUI,你从 1 个选项菜单开始,用户可以添加更多选项菜单。为了添加额外的选项菜单,我使用了一个函数:

def addmove():
    global movecount, customalts, customvarlist
    if ((customvarlist[-1] == "Choose action")) == False:
        customvar = StringVar()
        movecount += 1
        #print(customvarlist[index(movecount)])
        newMenu = OptionMenu(canvasframe, customvar, *customalts, command=autocontroll)
        newMenu.grid(row=movecount,column=0)
        #customvarlist.insert(movecount, customvar)
        customvarlist.append(customvar.get())

每次选择一个选项时,都会调用以下函数:

def autocontroll(action):
    global customvarlist
    print(action)
    if len(customvarlist) == 0:
        customvarlist.append(action)
    else:
        if(customvarlist[-1] == "Choose action") and ((action != "Choose action")):
            customvarlist = customvarlist[:-1]
            customvarlist.append(action)
    print(customvarlist)

我希望能够创建一个选定选项的列表,我通过从选项菜单中获取变量来做到这一点。但是当用户决定选择一个项目然后更改为另一个时,问题就出现了。例如,如果选项是 [item1, item2, item3],并且用户选择了 2 个项目,[item1, item2],但随后更改为 [item3, item2],我的列表不会更新,它仍然是选择的第一个顺序。

我的一个想法是尝试找到哪个选项菜单正在执行调用,以便知道我需要以列表中的哪个顺序更新项目。但我不知道有什么方法可以做到这一点。

标签: pythonlisttkinterttktkinter.optionmenu

解决方案


推荐阅读