2014-02-16 55 views
2

我想從python3.3中的optionmenu tkinter部件中獲取列表變量。這個小部件是這樣寫的;從Python中的tkinter OptionMenu獲取列表變量

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部件「菜單」的情況下是我需要調用的設置。但是當我打電話給我時,我會看到一些看起來像內存位置的東西。

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

顯然,內存位置不是恆定的。有什麼方法可以讓我返回一個人的價值(例如list1)。

在此先感謝。

回答

5

您無法獲取列表變量,因爲小部件對列表變量一無所知。在創建窗口小部件時,您將從列表窗口小部件中提供,但不是列表本身。

menu屬性返回Menu類的實例。它也不會了解你的名單。

如果您想列表與微件相關聯,將其設置爲一個屬性:

my_opmenu.list = list1 

以後,當你想要的名單後面,你可以這樣做:

print "my list:", my_opmenu.list 
+0

感謝你的回覆。但你如何獲取屬性?如果我執行上述關聯,那麼'my_opmenu.cget('list')'返回一個錯誤。 –

+0

@I_do_python:您使用'my_opmenu.list'。 –