我使用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个选项菜单使用的选项列表中持有?
选项菜单无非是与连接到它的菜单的标准按钮更。因此,要在你只需要获得与optionmenu相关的菜单选项菜单中的值,并且使用的方法提供的菜单上拿到菜单上的项目。
例如,让我们假设om
代表optionmenu。为了让你能做到这一点的菜单:
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
将包含出现在菜单上的值。