在Tkinter的OptionMenu中添加命令?

3 投票
1 回答
32640 浏览
提问于 2025-05-01 15:43

我正在写一些Python 2.7.8的代码,其中包含一个叫做OptionMenu的小部件。我想创建一个OptionMenu,当选项改变时可以调用一个函数,同时我希望这些选项能从一个列表中获取,因为我最终的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,既能在选项改变时调用函数能从列表中获取可选项呢?

暂无标签

1 个回答

10

其实你不需要直接调用 apply 这个功能,这就是为什么在 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)

撰写回答