Tkinter OptionMenu命令异常

Cru*_*xel 0 python exception tkinter optionmenu

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

tl.wktype = OptionMenu(tl,wktypevar, *wk_types,command=typeupdate)
Run Code Online (Sandbox Code Playgroud)

代码中的其他位置是typeupdate()Command - 用于调试目的.

def typeupdate():
    typeval = tl.wktype.get()
    print(typeval)
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

确实typeupdate()给出了什么位置参数以及如何解决这个问题?

iCo*_*dez 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()
Run Code Online (Sandbox Code Playgroud)

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

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

def typeupdate(val):
Run Code Online (Sandbox Code Playgroud)