[英]Python, Kivy, "AssertionError: None is not callable" Error on function call by button
所以我想使用此代碼在按下按鈕時調用 function:
botao_ok.bind(on_press=f_adicionar_socios(txt_n_socio.text,txt_nome.text,txt_filho_de.text,txt_filho_e_de.text,txt_data_nas.text,txt_tipo_ID.text,txt_num_ID.text,txt_NIF.text,txt_morada_rua.text,txt_morada_localidade.text,txt_codigo_postal.text,txt_tel_fixo.text,txt_telemovel.text,txt_email.text,txt_tipo_socio.text,txt_data_admicao.text,txt_zona.text,txt_actividade.text,txt_actividade_de.text,txt_actividade_ate.text,txt_observacoes.text))
但為了簡單起見,我只需要解決這個問題:
#My Function
def teste_(nome):
print nome
#Button
botao_ok.bind(on_press=teste_('Ola'))
# Button is inside a Class MYApp
它給出了錯誤:AssertionError: None is not callable
我已經嘗試了所有我遇到的困難,但無法解決這個問題......謝謝
當你寫teste_('Ola')
函數運行並返回None
所以當你寫
botao_ok.bind(on_press=teste_('Ola'))
它實際上被設置為:
botao_ok.bind(on_press=None)
簡而言之,這導致了您的問題。
為了讓它在按下按鈕時調用teste_('Ola')
,您可以使用 lambda 函數:
botao_ok.bind(on_press=lambda x:teste_('Ola'))
如果您的 function 呼叫不需要任何 arguments,您可以寫下不帶括號的 function 的名稱或 lambda:
function_caller.bind(on_press=your_function)
這是可行的,因為 python 將函數視為一等值,就像字符串、integer 或浮點數一樣。
(這個答案是為那些有類似問題並想要更清晰代碼的人准備的,在這種情況下的正確答案就是文森特上面描述的)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.