Erstellen Sie ein Echtzeit-Python-Menü: Kein Drücken der Enter-Taste mehr erforderlich!

Das Erstellen interaktiver Menüs in Python kann oft einfach und unkompliziert sein. Wenn Sie jedoch das Benutzererlebnis verbessern möchten, indem Sie die Auswahl mit einer Tasteneingabe ermöglichen, anstatt dass der Benutzer die Enter-Taste drücken muss, könnten Sie in Schwierigkeiten geraten. In diesem Blogbeitrag erforschen wir das Problem, dass die Enter-Taste zur Bestätigung von Menüauswahlen benötigt wird, und stellen eine Lösung vor, die die Erkennung von Tastatureingaben nutzt.

Verständnis des Problems

In traditionellen Konsolenanwendungen erfordern Eingabemethoden wie raw_input() (oder einfach input() in Python 3) in der Regel, dass die Benutzer die Enter-Taste drücken, nachdem sie eine Option ausgewählt haben. Dies kann das Benutzererlebnis beeinträchtigen, insbesondere im Kontext von Menüs, in denen eine schnelle Reaktion gewünscht wird.

Der vorhandene Code, den der Benutzer bereitgestellt hat, sieht wie folgt aus:

import sys
print """Menü
1) Sage Foo
2) Sage Bar"""
antwort = raw_input("Wählen Sie eine Option> ")

if "1" in antwort: print "foo"
elif "2" in antwort: print "bar"

So wie der Code jetzt ist, muss der Benutzer nach der Eingabe seiner Auswahl die Enter-Taste drücken. Aber es gibt einen besseren Weg!

Die Lösung: Verwendung von msvcrt

Wenn Sie sich auf einer Windows-Plattform befinden, kann uns die msvcrt-Bibliothek helfen, die Erkennung von Eingaben in Echtzeit zu erreichen. Die Schlüssel-Funktion hier ist getch(), die einen Tastendruck sofort erfasst, ohne auf einen Enter-Druck zu warten.

Schritt-für-Schritt-Anleitung

  1. Importieren Sie die Bibliothek Beginnen Sie damit, die msvcrt-Bibliothek zu importieren, mit der wir mit der Tastatureingabe in der Konsole interagieren können.

    import msvcrt
    
  2. Erfassen Sie den Tastendruck Nutzen Sie die Funktion getch(), um auf einen einzelnen Tastendruck zu warten, sodass das Programm sofort darauf reagieren kann, wenn die Taste gedrückt wird.

    antwort = msvcrt.getch()
    
  3. Implementieren Sie das Menü Lassen Sie uns dies nun in einen Kontext setzen, indem wir ein einfaches Menü erstellen, das auf die Tasten 1 oder 2 hört, ohne dass Enter erforderlich ist.

    import msvcrt
    
    print("Menü")
    print("1) Sage Foo")
    print("2) Sage Bar")
    
    while True:  # Endlosschleife, um ständig auf einen Tastendruck zu prüfen
        antwort = msvcrt.getch()  # Auf Tastendruck warten
    
        if antwort == b'1':  # Wenn '1' gedrückt wird
            print("foo")
            break  # Schleife nach der Antwort verlassen
        elif antwort == b'2':  # Wenn '2' gedrückt wird
            print("bar")
            break  # Schleife nach der Antwort verlassen
    

Funktionsweise

  • Das Menü wird angezeigt, und das Programm tritt in eine Schleife ein.
  • Die Funktion getch() pausiert das Programm, bis der Benutzer eine Taste drückt.
  • Nach der Erkennung der Taste prüft es, ob sie 1 oder 2 entspricht, führt die entsprechende Aktion aus und verlässt dann die Schleife.

Fazit

Indem Sie die oben beschriebenen Schritte befolgen, können Sie ein effizienteres und benutzerfreundlicheres Menüerlebnis in Ihren Python-Anwendungen schaffen. Mit der msvcrt-Bibliothek, die eine sofortige Tastenerkennung ermöglicht, können Benutzer mit Ihrem Programm interagieren, ohne die umständliche Anforderung, die Enter-Taste zu drücken.

Jetzt können Sie Ihre Konsolenanwendungen verbessern und eine reibungslosere Interaktion für die Benutzer schaffen. Viel Spaß beim Programmieren!