【问题标题】:Tkinter get OptionMenu Option ListTkinter 获取 OptionMenu 选项列表
【发布时间】:2019-07-04 09:31:51
【问题描述】:

我正在使用 Python 3,Tkinter 模块。我查看了 ttk 库,其中一个小部件有一个选项菜单。很好,但我想知道是否有办法检索菜单当前正在使用的选项列表。

在这个例子中:

Options_List=["option1","option2"]
My_Menu = OptionMenu(master, variable, *Options_List))

我知道这可能看起来微不足道。只需检索Options_List 变量。但现在让我们假设我正在制作大量选项(使用相同或不同的列表):

Options_List=["option1","option2","option3"]
Menu_List = []
for Option in range(3):
    My_Menu = OptionMenu(master, variable, *Options_List))
    Menu_List.append(My_Menu)
    Options_List.del(-1) #removes last item

我刚刚利用了这个事实:当分配选项菜单时,选项是Options_List变量的副本,而不是对其的引用,因此在执行代码时,它们都会引用自己的版本Options_List.

选项输出将产生:

Menu_List[0] -> ["option1","option2","option3"]
Menu_List[1] -> ["option1","option2"]
Menu_List[2] -> ["option1"]

现在您可以看到我不能只检索Options_List,因为每个选项菜单都有自己的列表来处理。

那么,有什么想法吗?有什么方法可以获取我的第 n 个选项菜单正在使用的选项列表?

【问题讨论】:

  • 使用是什么意思?

标签: python tkinter drop-down-menu ttk


【解决方案1】:

选项菜单只不过是一个附有菜单的标准按钮。因此,要获取选项菜单中的值,您只需获取与选项菜单关联的菜单,并使用菜单上可用的方法来获取菜单上的项目。

例如,假设om 代表选项菜单。要获取菜单,您可以这样做:

menu = om['menu']

menu 现在是对Menu 对象的引用。您可以使用index 方法找出最后一项的索引:

    last_index = menu.index("end")

这样,您可以遍历菜单中的项目。如果需要标签,可以使用entrycget 获取该属性的值:

    values = []
    for i in range(last_index+1):
        values.append(menu.entrycget(i, "label"))

这样,values 将包含出现在菜单上的值。

【讨论】:

    猜你喜欢
    • 2015-09-23
    • 2016-05-10
    • 2017-12-31
    • 2013-10-08
    • 2021-04-29
    • 1970-01-01
    • 1970-01-01
    • 2021-03-09
    相关资源
    最近更新 更多