如何从tkinter OptionMenu获取列表变量?

时间:2014-02-16 17:12:47

标签: python python-3.x tkinter

我正在尝试从python3.3中的OptionMenu tkinter小部件获取列表变量。

小部件是这样写的;

list1 = ['One', 'Two', 'Three']
var1 = tkinter.StringVar()
var1.set(list1[0])

window = tkinter.Tk()
my_opmenu = tkinter.OptionMenu(window, var1, *list1)
my_opmenu.grid()
window.mainloop()

我知道您可以使用cget()方法来检索窗口小部件的配置,我认为在OptionMenu窗口小部件my_opmenu的上下文中是我需要调用的设置。但是当我打电话给它时,我得到了一个看起来像记忆位置的东西。

print(my_opmenu.cget('menu'))
>>.24620080.24620272.25126224.25126352.25126736.menu

显然内存位置不是恒定的。有没有什么方法可以让人的价值得到回报(即list1)。

1 个答案:

答案 0 :(得分:5)

您无法获取列表变量,因为窗口小部件对列表变量一无所知。当您创建窗口小部件时,您将从列表窗口小部件中提供,而不是列表本身。

menu属性返回Menu类的实例。它也不会对你的清单有任何了解。

如果要将列表与窗口小部件关联,请将其设置为属性:

my_opmenu.list = list1

稍后,当您想要列表时,您可以执行以下操作:

print "my list:", my_opmenu.list