2016-10-01 133 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

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