Créer un menu Python Temps Réel
: Plus besoin de la touche Entrée !
Créer des menus interactifs en Python peut souvent être simple et direct. Cependant, si vous cherchez à améliorer l’expérience utilisateur en permettant de faire des sélections avec une seule touche, plutôt que de demander à l’utilisateur d’appuyer sur Entrée
, vous pourriez vous retrouver dans une impasse. Dans cet article de blog, nous allons explorer le problème de la nécessité d’utiliser la touche Entrée
pour confirmer les choix de menu et introduire une solution qui exploite la détection d’entrée clavier.
Comprendre le Problème
Dans les applications console traditionnelles, les méthodes de saisie utilisateur comme raw_input()
(ou simplement input()
en Python 3) nécessitent généralement que les utilisateurs appuient sur la touche Entrée
après avoir sélectionné une option. Cela peut nuire à l’expérience utilisateur, surtout dans le contexte de menus où une réponse rapide est souhaitée.
Le code existant que l’utilisateur a fourni est le suivant :
import sys
print """Menu
1) Dire Foo
2) Dire Bar"""
answer = raw_input("Faites une sélection> ")
if "1" in answer: print "foo"
elif "2" in answer: print "bar"
En l’état, ce code nécessite que l’utilisateur appuie sur Entrée
après avoir tapé sa sélection. Mais il existe une meilleure façon de faire !
La Solution: Utiliser msvcrt
Si vous êtes sur une plateforme Windows, la bibliothèque msvcrt
peut nous aider à réaliser une détection d’entrée en temps réel. La fonction clé ici est getch()
, qui capture une frappe immédiatement sans attendre un appui sur Entrée
.
Guide Étape par Étape
-
Importer la Bibliothèque Commencez par importer la bibliothèque
msvcrt
qui nous permet d’interagir avec l’entrée clavier de la console.import msvcrt
-
Capturer la Frappe Utilisez la fonction
getch()
pour attendre une seule pression de touche, permettant au programme d’agir au moment où la touche est pressée.answer = msvcrt.getch()
-
Implémenter le Menu Maintenant, mettons cela en contexte en créant un menu simple qui écoute pour les touches
1
ou2
sans nécessiterEntrée
.import msvcrt print("Menu") print("1) Dire Foo") print("2) Dire Bar") while True: # Boucler indéfiniment pour continuer à vérifier une pression de touche answer = msvcrt.getch() # Attendre une pression de touche if answer == b'1': # Si '1' est pressé print("foo") break # Quitter la boucle après avoir répondu elif answer == b'2': # Si '2' est pressé print("bar") break # Quitter la boucle après avoir répondu
Comment ça fonctionne
- Le menu s’affiche et le programme entre dans une boucle.
- La fonction
getch()
met le programme en pause jusqu’à ce que l’utilisateur appuie sur une touche. - Après avoir détecté la touche, elle vérifie si elle correspond à
1
ou2
, exécute l’action appropriée, puis quitte la boucle.
Conclusion
En suivant les étapes décrites ci-dessus, vous pouvez créer une expérience de menu plus efficace et conviviale dans vos applications Python. Avec la bibliothèque msvcrt
permettant une détection immédiate des frappes, les utilisateurs peuvent interagir avec votre programme sans l’exigence encombrante d’appuyer sur Entrée
.
Vous pouvez maintenant améliorer vos applications console et offrir une interaction plus fluide à vos utilisateurs. Bon codage !