Python >> Tutoriel Python >  >> Python GUI >> Kivy GUI

Lier la fonction au bouton Kivy

Je pense qu'aucune des réponses n'est très claire. Ni l'un ni l'autre n'explique que le problème est que le rappel donné à on_press est appelé avec un paramètre, l'instance de bouton, donc LoginScreen.auth doit accepter un paramètre après le self :

def auth(self, button):
    print('button pressed:', instance)

Le problème n'est pas ce on_press doit être donné via Button.bind ou que le rappel doit être une fonction, il peut s'agir d'une méthode liée, et les documents cités par une autre réponse et par des commentaires renvoient à ButtonbBhavior ce qui indique que l'OP utilise on_press dans le constructeur était bien :

self.hello = Button(text="hello", on_press=self.auth)

aurait fonctionné si auth avait été comme décrit ci-dessus.


Si vous lisez la documentation de Button, la clé semble être d'utiliser le bind fonction :

def callback(instance):
    print('The button <%s> is being pressed' % instance.text)

btn1 = Button(text='Hello world 1')
btn1.bind(on_press=callback)