0

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

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()我该如何解决这个问题?

4

1 回答 1

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()

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

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

def typeupdate(val):
于 2013-08-31T15:10:26.167 回答