Python 2.7 使用.bind时如何传递参数?

Python 2.7 使用.bind时如何传递参数?,python-2.7,tkinter,parameter-passing,Python 2.7,Tkinter,Parameter Passing,我试图将单独的函数绑定到按钮的左键和右键。 不幸的是,python在按下按钮时出现了以下错误: Exception in Tkinter callback Traceback (most recent call last): File "C:\Python27\lib\lib-tk\Tkinter.py", line 1542, in __call__ return self.func(*args) TypeError: () takes no arguments (1 given)

我试图将单独的函数绑定到按钮的左键和右键。 不幸的是,python在按下按钮时出现了以下错误:

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Python27\lib\lib-tk\Tkinter.py", line 1542, in __call__
    return self.func(*args)
TypeError: () takes no arguments (1 given)
我认为这与Tkinter在调用函数时也传递事件信息有关

这是代码(我把它缩短了一点,删除了一些不必要的东西):

class雷场():
定义初始化(自、X、Y、父、数组):
self.Button=Tk.Button(父级)
self.Button.bind(“”,lambda:Array.Trigger(self.state,self.cordX,self.cordY))#注意:数组函数触发器
self.Button.bind(“”,lambda:self.setState(self.state,1))
类数组():
定义初始化(自):
self.Array=[]
def触发器(自身、X、Y):
打印“触发点”,X,Y
什么都不做
现在我的问题是:


在不打算使用参数中定义的参数以外的其他东西的函数中,有效地传递哪些参数?如何处理这些参数?

将函数绑定到事件时,tkinter将始终向函数传递一个参数。此参数是一个包含事件信息的对象,例如接收事件的小部件、导致事件的键或鼠标等

如果调用的函数不需要参数,请忽略它。如果还需要在事件上下文之外使用该函数,请将其默认值设置为
None

如果要向回调传递其他参数,则需要说明lambda中的
事件
参数。您不必使用它,但您的lambda需要接受它。例如:

self.Button.bind('<Button-3>', lambda event: self.setState(self.state,1)) 
self.Button.bind(“”,lambda事件:self.setState(self.state,1))

只需向lambda添加一个伪参数-
lambda x:
而不是
lambda:
。当事件绑定传递给事件对象时,您不需要总是使用它,但它总是在那里。在上面的类中,不应该
def\uu init\uuuuuuuuuuuself(self)
也包括一个“Event”参数,即
def\uuu init\uuuuuuself(self,Event)
?@anonnoir:no。但是,您没有正确地使用该函数。您将其视为一个类方法,即使它是一个实例方法。无论如何,对于
事件
参数,它只传递给调用的任何函数。
self.Button.bind('<Button-3>', lambda event: self.setState(self.state,1))