我正在尝试从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
)。
答案 0 :(得分:5)
您无法获取列表变量,因为窗口小部件对列表变量一无所知。当您创建窗口小部件时,您将从列表窗口小部件中提供值,而不是列表本身。
menu
属性返回Menu
类的实例。它也不会对你的清单有任何了解。
如果要将列表与窗口小部件关联,请将其设置为属性:
my_opmenu.list = list1
稍后,当您想要列表时,您可以执行以下操作:
print "my list:", my_opmenu.list