【问题标题】:Set OptionMenu by index按索引设置 OptionMenu
【发布时间】:2013-08-28 14:56:22
【问题描述】:

我正在尝试通过选项的索引设置 OptionMenu 中的值,而不是使用实际的选项值本身。

例如,如果我的 OptionMenu 有选项 ["one", "two", "three"],我希望能够通过编写 My_Option_Menu.set(options[0]) 而不是 My_Option_Menu.set("one") 将其设置为 "one"

OptionMenu 由列表动态填充,具体取决于其他两个 OptionMenus 的设置,这就是为什么我想通过索引而不是实际值来引用选项的原因。 OptionMenu 对象是否有办法返回当前填充的选项列表,以便我上面的options[0] 方法可以工作?

【问题讨论】:

    标签: python tkinter tk optionmenu


    【解决方案1】:

    最简单的方法是保留用于定义选项菜单的列表的副本。然后您可以使用索引从列表中获取值并将其分配给关联的变量。

    例如:

    options = ["one","two","three"]
    ...
    self.menuVar = tk.StringVar(master)
    self.optionMenu = tk.OptionMenu(master, self.menuVar, *options)
    ...
    self.menuVar.set(options[0])
    

    另一个选项是获取与小部件关联的菜单对象,并使用菜单命令获取给定索引处的文本,并使用它来设置变量:

    value = self.optionMenu["menu"].entrycget(0, "label")
    self.menuVar.set(value)
    

    【讨论】:

    • 完美!第二个选项正是我想要的。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2018-11-27
    • 1970-01-01
    • 2021-03-08
    • 1970-01-01
    • 1970-01-01
    • 2015-03-05
    • 2011-11-19
    • 2012-12-28
    相关资源
    最近更新 更多