从OptionMenu获取所有选项的列表

4
我希望能够从tkinter的OptionMenu组件中获取所有选项的列表,如下所示:
import tkinter

root = tkinter.Tk()

var = tkinter.StringVar(root)
var.set('OptionMenu')
optionMenu = tkinter.OptionMenu(root, var, 'foo1', 'foo2')
optionMenu.pack()

listOfAllOptions = optionMenu.getOptions()
# listOfAllOptions == ['foo1', 'foo2']

root.mainloop()

有没有实现这个功能的函数?如果没有,有什么解决方法吗?

不确定这些数据是如何存储的,optionMenu.config() 中也没有列出。或许唯一的方法是在创建小部件之前将它们存储在列表中... - tobias_k
似乎不太可能,但无论如何我需要那个功能 - 感谢您的提供。 - TheLastOfTheMoops
1个回答

8
你可以获取与选项菜单相关联的菜单(例如:optionMenu ["menu"]),然后使用菜单方法获取项目。这需要几行代码。但老实说,最简单的方法是将值放入附加到小部件的列表中(例如:optionMenu.items = the_list_of_values)。
如果你想从实际小部件中提取数据,你可以像这样操作:
menu = optionMenu["menu"]
last = menu.index("end")
items = []
for index in range(last+1):
    items.append(menu.entrycget(index, "label"))
print "items:", items

感谢您的评论。关于解决方案 - 我正在寻找这种方式,以便我不必以不同的方式保存所做的更改。因此,如果您与我分享如何从小部件本身获取选项的解决方案,我将不胜感激。 - TheLastOfTheMoops

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接