kivy python将参数传递给按钮单击功能
问题描述:
我在按下按钮调用它时将参数传递给函数时遇到问题。有人可能会不喜欢这样的kivy语言:kivy python将参数传递给按钮单击功能
Button:
on_press: root.my_function('btn1')
,但我想这样做的蟒蛇,我想创建按钮更大数量的具有循环。目前,我打电话给我的功能在Python这样的:
Button(on_press=self.my_function)
但正如我所说,如果我尝试一个参数传递给这样的功能,我得到一个“Asse田:没有一个是不可调用的”,像这样:
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))
工作就像魅力。非常感谢! –