【问题标题】:kivy python passing parameters to fuction with button clickkivy python通过单击按钮将参数传递给函数
【发布时间】:2017-02-10 01:49:18
【问题描述】:

按下按钮调用函数时,我无法将参数传递给函数。用 kivy 语言可以这样做:

Button: 
   on_press: root.my_function('btn1')

但我想用 python 来做,因为我想用循环创建更多的按钮。目前我在 python 中这样调用我的函数:

Button(on_press=self.my_function)

但正如我所说,如果我尝试将参数传递给这样的函数,我会得到一个“AssertionError: None is not callable”,如下所示:

Button(on_press=self.my_function('btn1'))

【问题讨论】:

    标签: python function button kivy


    【解决方案1】:
    Button(on_press=self.my_function)
    

    这是传递函数作为参数。

    Button(on_press=self.my_function('btn1'))
    

    这是调用函数并将返回值作为参数传递给on_press。由于返回值为 None,因此您得到了错误。

    您需要传递一个新函数,该函数调用您的普通函数并自动传递参数。一般用functools.partial比较方便:

    from functools import partial
    Button(on_press=partial(self.my_function, 'btn1'))
    

    您还可以使用 lambda 函数:

    Button(on_press=lambda *args: self.my_function('btn1', *args))
    

    【讨论】:

      猜你喜欢
      • 2011-10-10
      • 1970-01-01
      • 2017-11-22
      • 1970-01-01
      • 2021-10-09
      • 2021-02-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多