【问题标题】:How to change the values in tkinter's OptionMenu?如何更改 tkinter OptionMenu 中的值?
【发布时间】:2020-10-06 18:12:18
【问题描述】:

tkinter 中的 OptionMenu 为菜单中的选项提供任意数量的参数,如下所示:

import tkinter as tk
newMenu = tk.OptionMenu(self, clicked, "A", "B", command=doSomething)

有没有办法更新 OptionMenu 中的参数数量,以便我可以从上面的代码转到这个新代码:

newMenu = tk.OptionMenu(self, clicked, "A", "B", "C", "D", command=doSomething)

【问题讨论】:

标签: python tkinter


【解决方案1】:

tk.OptionMenu 中有一个 Menu 小部件。

如果你想添加一些值,你可以使用add_command:

for i in ["C","D"]:
    newMenu['menu'].add_command(label=i)

如果要删除某些值,请使用delete

newMenu['menu'].delete("0",tk.END) # this will remove all the values

@acw1668 指出了我代码中的一个大问题,如果您还想绑定命令并更改clicked 变量。

推荐这个(acw1668建议):

for i in ["C", "D"]:
    newMenu['menu'].add_command(label=i, command=tk._setit(clicked, i, doSomething))

这也可以,但不推荐:

for i in ["C", "D"]:
    newMenu['menu'].add_command(label=i, command=lambda i=i:clicked.set(i) or doSomething(i))

【讨论】:

  • 谢谢!我玩弄了这些命令,现在它们很有意义。
  • 但是新添加的item不会调用doSomething()并设置clicked变量。
  • @acw1668 好的,我会努力解决的。谢谢。
  • @ephemeralhappiness 你可以拒​​绝我的回答,这样我就可以删除它,因为我找到了一个duplicate question here,这个会很详细。
  • 试试newMenu['menu'].add_command(label=i, command=tk._setit(clicked, i, doSomething))
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多