通过按下按钮调用函数时,我在将参数传递给函数时遇到问题。可以用 kivy 语言这样做:
Button:
on_press: root.my_function('btn1')
但我想用 python 来做,因为我想创建更多带有循环的按钮。目前我在 python 中调用我的函数,如下所示:
Button(on_press=self.my_function)
但正如我所说,如果我尝试将参数传递给这样的函数,我会收到“AssertionError:None 不可调用”,如下所示:
Button(on_press=self.my_function('btn1'))
最佳答案
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))
关于python - kivy python通过单击按钮将参数传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39809206/