2016-10-01 134 views
1

我在按下按钮调用它时将参数传递给函数时遇到问题。有人可能会不喜欢这样的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')) 

回答

3
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)) 
+0

工作就像魅力。非常感谢! –