我想创建一个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()
给出了什么位置参数?如何解决?
答案 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):