python - 更改菜单选项时如何更新从 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],我的列表不会更新,它仍然是选择的第一个顺序。
我的一个想法是尝试找到哪个选项菜单正在执行调用,以便知道我需要以列表中的哪个顺序更新项目。但我不知道有什么方法可以做到这一点。
解决方案
推荐阅读
- python - 当 for 循环中至少一轮为“真”时如何触发事件
- python - 如何通过 Python 连接比特币 rpc?
- mysql - 如何从另一列中的文本添加新列
- mysql - 消除具有不同的字段
- regex - 正则表达式 - 最多 30 个字符,有限制
- server - PHPList 无法连接到 smtp 服务器
- webpack - npm webpack 安装挂起
- python - 我正在尝试使用 SQLAlchemy 作为 db.session 在烧瓶应用程序中表示 sql 连接
- ansible - 字典项目的 Ansible 条件
- c# - 如何保存来自 C# 代码的用户响应并防止多选单选按钮