【问题标题】:Python tkinter binding a function with multiple parametersPython tkinter 绑定具有多个参数的函数
【发布时间】:2013-03-06 21:41:44
【问题描述】:

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

def someFunction(self, event, string):

   do stuff ..

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

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

【问题讨论】:

    标签: python tkinter arguments


    【解决方案1】:

    或者,

    def someFunction(self, string):
       def fn(*arg)
          print string
       return fn
    
    
    self.canvas.bind("<Button-1>",self.someFunction("Hello!"))
    

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-10
        • 1970-01-01
        • 1970-01-01
        • 2015-11-10
        • 2019-07-18
        相关资源
        最近更新 更多