[英]tkinter ttk OptionMenu losing checkmark highlight when updating option list
[英]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.