Tkinter OptionMenu命令异常

时间:2013-08-31 15:02:06

标签: python exception tkinter optionmenu

我想创建一个tkinter OptionMenu,在更改时编辑另一个OptionMenu。所以我尝试创建一个command=参数,它使OptionMenu的每次更新都运行一个特定的命令,就像我将command=参数用于按钮,旋转框等时一样。 / p>

tl.wktype = OptionMenu(tl,wktypevar, *wk_types,command=typeupdate)

代码中的其他位置是typeupdate()命令 - 目前用于调试目的。

def typeupdate():
    typeval = tl.wktype.get()
    print(typeval)

python抛出的异常如下:

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Python33\lib\tkinter\__init__.py", line 1475, in __call__
    return self.func(*args)
  File "C:\Python33\lib\tkinter\__init__.py", line 3300, in __call__
    self.__callback(self.__value, *args)
TypeError: typeupdate() takes 0 positional arguments but 1 was given

typeupdate()给出了什么位置参数?如何解决?

1 个答案:

答案 0 :(得分:5)

给出了点击的值。要演示,请考虑以下脚本:

from tkinter import Tk, OptionMenu, StringVar
root = Tk()
def func(val):
    print(val)
var = StringVar()
OptionMenu(root, var, "one", command=func).grid()
root.mainloop()

运行时(当我点击optionmenu中的“one”选项时),它会在终端中打印“one”。

因此,总而言之,将val(或任何其他参数名称)添加到函数声明中,它将起作用:

def typeupdate(val):