两天前我开始使用Python(2.7.3),我需要在GUI回调函数中使用参数。我一直在寻找任何关于effbot的信息,但我不知道我的情况有什么问题。
from Tkinter import *
fenetre = Tk()
var_texte = StringVar()
ligne_texte = Entry(fenetre, textvariable=var_texte ,width=30)
def callback(s):
print("we got there with :"+s)
trace_name = var_texte.trace_variable("w",lambda: callback(ligne_texte.get()))
ligne_texte.pack()
fenetre.mainloop()
我尝试使用lambda来传递我的参数但是当我在条目中键入文本时出现此错误:
Exception in Tkinter callback
Traceback (most recent call last):
File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1413, in __call__
return self.func(*args)
TypeError: <lambda>() takes no arguments (3 given)
我在此处发现了一条建议将lambda:
替换为lambda x:
的帖子,但我在TypeError: <lambda>() takes exactly 1 argument (3 given)
非常感谢任何解释或来源或信息:)
答案 0 :(得分:2)
正如错误消息所示,框架使用三个参数调用StringVar.trace_variable
。所以你的lambda函数应该接受这三个参数:
lambda name, idx, mode: ...
从http://staff.washington.edu/rowen/ROTKFolklore.html这里是参数的描述:
答案 1 :(得分:0)