2017-06-16 1 views
0

J'essaie de créer un Keylistener python pour une voiture auto-conduite en utilisant le module msvcrt. Mais il ne capture pas les touches que j'appuie. Voici le code:Enregistreur de clés Python avec msvcrt

if msvcrt.getwch() == 'w': 
    keypresses.append(1) 
elif msvcrt.getwch() == 's': 
    keypresses.append(2) 
elif msvcrt.getwch() == 'd': 
    keypresses.append(3) 
elif msvcrt.getwch() == 'a': 
    keypresses.append(4) 
elif msvcrt.getwch() == 'w'and'a': 
    keypresses.append(5) 
elif msvcrt.getwch() == 'w'and'd': 
    keypresses.append(6) 
elif msvcrt.getwch() == 's'and'a': 
    keypresses.append(7) 
elif msvcrt.getwch() == 's'and'd': 
    keypresses.append(8) 
else: 
    keypresses.append(0) 

Quelqu'un peut-il me dire quel est le problème avec mon code?

Répondre

0

Le principal problème avec votre code est que vous recherchez une nouvelle touche dans chaque instruction if, plutôt que d'enregistrer la première fois et de vérifier ce résultat. Pour enregistrer la pression de touche une fois, vous devriez faire ceci:

keypress = msvcrt.getwch() 

puis vérifier la valeur de pression de touche. i.e. .:

if keypress == "a": 
    print("The 'a' key has been pressed') 
+0

Cela n'a pas fonctionné): –

+0

Quel est le problème alors? Pourriez-vous décrire plus en détail le problème? – Philanthropy

+0

Le programme doit ajouter un certain nombre à la matrice "pression des touches" lorsque les touches W, A, S ou D sont enfoncées et 0 lorsque quelque chose d'autre se produit. Mais il ajoute seulement 0, peu importe si j'appuie sur la touche W, A, S ou D. J'espère que cette explication a aidé. –