2

我有一个一般性的问题,我真的找不到答案,所以希望你们能提供帮助。我有一个带有 3 个参数的函数,下面是我所拥有的示例。

def someFunction(self, event, string):

   do stuff ..

self.canvas.bind("<Button-1>", self.someFunction("Hello"))

当我运行它时,我收到一条错误消息,说我传递了 someFunction 2 参数而不是 3。我不知道为什么..

4

2 回答 2

12

在这里,您正在绑定(或无论如何尝试)的结果someFunction这失败了,因为当 python 试图获取 的结果时someFunction,它调用它只传递 1 个参数 ( "Hello"),而someFunction实际上需要 2 个显式参数。你可能想要这样的东西:

self.canvas.bind('<Button-1>',lambda event: self.someFunction(event,"Hello"))

这绑定了一个传递正确参数的新函数(由创建lambda并环绕)。self.someFunction

于 2013-03-18T14:06:40.117 回答
0

或者,

def someFunction(self, string):
   def fn(*arg)
      print string
   return fn


self.canvas.bind("<Button-1>",self.someFunction("Hello!"))
于 2014-02-10T22:59:13.210 回答