2014-11-04 118 views
1

我在Python 2.7.8中寫了一些代碼,其中包括OptionMenu小部件。我想創建一個OptionMenu,當選項被更改時調用一個函數,但我也希望可以在列表中找到可能的選項,因爲我的最終OptionMenu將有很多選項。將命令添加到Tkinter OptionMenu?

我用下面的代碼來創建一個OptionMenu調用一個函數:

from Tkinter import* 

def func(value): 
    print(value) 

root = Tk() 

var = StringVar() 
DropDownMenu=OptionMenu(root, var, "1", "2", "3", command=func) 
DropDownMenu.place(x=10, y=10) 

root.mainloop() 

我還發現下面的代碼創建與在列表中找到選項的OptionMenu

from Tkinter import* 

root = Tk() 

Options=["1", "2", "3"] 
var = StringVar() 
DropDownMenu=apply(OptionMenu, (root, var) + tuple(Options)) 
DropDownMenu.place(x=10, y=10) 

root.mainloop() 

如何在創建OptionMenu時調用該選項時的功能從列表中獲取可能的選項?

回答

6

從來沒有需要直接應用電話,這就是爲什麼在2.7代表和在3.0代表。而是使用* seq語法。結合你所做的兩件事。以下似乎做你想要的。

from tkinter import * 

def func(value): 
    print(value) 

root = Tk() 
options = ["1", "2", "3"] 
var = StringVar() 
drop = OptionMenu(root, var, *options, command=func) 
drop.place(x=10, y=10) 
+0

'apply()'自2.3版開始已被棄用(根據當前的2.7版本[文檔](https://docs.python.org/2/library/functions.html#apply))。 – martineau 2017-08-13 14:21:13