Python tkinter 绑定具有多个参数的函数[重复]

问题描述 投票:0回答:2

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

def someFunction(self, event, string):

   do stuff ..

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

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

python tkinter arguments
2个回答
13
投票

在这里,您正在绑定 someFunction

结果
(或者无论如何尝试)。 这会失败,因为当 python 尝试获取
someFunction
的结果时,它调用它时仅传递 1 个参数 (
"Hello"
),而
someFunction
确实需要 2 个显式参数。 您可能想要类似的东西:

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

这会绑定一个新函数(由

lambda
创建并环绕
self.someFunction
),该函数传递正确的参数。


0
投票

或者,

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


self.canvas.bind("<Button-1>",self.someFunction("Hello!"))
© www.soinside.com 2019 - 2024. All rights reserved.