Python tkinter使用多个参数绑定一个函数

时间:2013-03-18 14:04:59

标签: python tkinter arguments

我有一个普遍的问题,我无法真正找到答案,所以希望你们可以提供帮助。我有一个带3个参数的函数,下面是我所拥有的一个例子。

def someFunction(self, event, string):

   do stuff ..

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

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

2 个答案:

答案 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!"))