我有一个普遍的问题,我无法真正找到答案,所以希望你们可以提供帮助。我有一个带3个参数的函数,下面是我所拥有的一个例子。
def someFunction(self, event, string):
do stuff ..
self.canvas.bind("<Button-1>", self.someFunction("Hello"))
当我运行这个时,我得到一个错误,说我传递了一些功能2参数而不是3.我不知道为什么......
答案 0 :(得分:8)
在这里,您绑定了someFunction
的结果(或尝试无论如何)。这会失败,因为当python尝试获取someFunction
的结果时,它会在"Hello"
确实需要2个显式参数时调用它只传递1个参数(someFunction
)。你可能想要这样的东西:
self.canvas.bind('<Button-1>',lambda event: self.someFunction(event,"Hello"))
这绑定了一个新函数(由lambda
创建并包裹self.someFunction
),它传递了正确的参数。
答案 1 :(得分:0)
或者,
def someFunction(self, string):
def fn(*arg)
print string
return fn
self.canvas.bind("<Button-1>",self.someFunction("Hello!"))