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