bouton.when_released 'NoneType' object is not callable

Vous venez de déballer votre Raspberry Pi et vous vous posez des questions ? C'est ici que ça se passe !

Modérateur : Francois

Répondre
carlosbiz
Messages : 1
Enregistré le : lun. 30 mars 2020 16:52

bouton.when_released 'NoneType' object is not callable

Message par carlosbiz » lun. 30 mars 2020 17:21

Bonjour,
à la page 260 du livre Raspberry Pi 4 -Exploitez tout le potentiel de votre nano-ordinateur, lorsque j'exécute ce code

from gpiozero import Button
bouton = Button(24)
def suite():
print("Le programme continue")

print ("Attente de l'appui sur le bouton")
bouton.wait_for_press()
print("Maintenez le bouton appuyé")
print("Le programme continuera quand vous le relacherez")
bouton.when_released()

"Attente de l'appui sur le bouton" s'affiche bien et le script attend la pression sur le bp avant de générer (une fois la pression effectuée) le message: TypeError :
bouton.when_released 'NoneType' object is not callable et ferme le script. L'instruction bouton.wait_for_press() est validé dans un script précédent, mais le xxx.when_released() fait planter le script.
Avez vous une astuce pour résoudre ce problème ?
Merci!!!

Avatar du membre
Flachy Joe
Messages : 88
Enregistré le : mar. 20 sept. 2016 22:30

Re: bouton.when_released 'NoneType' object is not callable

Message par Flachy Joe » ven. 10 avr. 2020 21:43

Salut,
voir la doc
https://gpiozero.readthedocs.io/en/stable/api_input.html a écrit : when_released

The function to run when the device changes state from active to inactive.

This can be set to a function which accepts no (mandatory) parameters, or a Python function which accepts a single mandatory parameter (with as many optional parameters as you like). If the function accepts a single mandatory parameter, the device that deactivated will be passed as that parameter.

Set this property to None (the default) to disable the event.
when_released n'est pas une fonction mais une propriété qui accepte comme valeur une fonction.
Pour attendre que le bouton soit relâché c'est wait_for_release
Ton code devrait donc être

Code : Tout sélectionner

from gpiozero import Button
bouton = Button(24)
def suite():
    print("Le bouton est relâché")

print ("Attente de l'appui sur le bouton")
bouton.wait_for_press()
print("Maintenez le bouton appuyé")
print("La fonction s'executera quand le bouton sera relâché")
bouton.when_released = suite
print("Le programme continue")
NB 1 : Tu peux définir la propriété avant que le bouton soit appuyé.
NB 2 : utilise les balises

Code : Tout sélectionner

[code][ /code]
quand tu copie/colle un code python, sinon les tabulations disparaissent.

Répondre

Retourner vers « Débutants »