繁体   English   中英

Tkinter 获取 OptionMenu 选项列表

[英]Tkinter get OptionMenu Option List

我正在使用 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

我只是利用了这样一个事实,即在分配 Option Menu 时,选项是Options_List变量的副本,而不是对它的引用,因此在执行代码时,它们都引用了自己的Options_List版本。

选项输出将产生:

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

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

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

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

例如,假设om代表选项菜单。 要获取菜单,您可以执行以下操作:

menu = om['menu']

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

    last_index = menu.index("end")

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM