HOWTO · Python
Tastendruck in Python erkennen
Erfahren Sie, wie Sie Tastatureingaben in Python mit keyboard, pynput und readchar erkennen, einschließlich Ereignissen für Drücken und Loslassen sowie Einzel-Tasten-Eingaben im Terminal.
Auf dieser Seite
Um Tastatureingaben in Python zu erkennen, wählen Sie eine Bibliothek danach aus, woher die Eingabe stammt: keyboard bietet Hooks auf Systemebene, pynput stellt Callbacks für Drücken und Loslassen bereit, und readchar liest eine einzelne Taste in einem Befehlszeilenprogramm, ohne auf die Eingabetaste zu warten. Installieren Sie das Paket Ihrer Wahl und passen Sie dann seine Callback- oder Leseschleife an Ihre Aufgabe an. Die folgenden paketspezifischen Beispiele hängen von Drittanbieter-Bibliotheken und vom Zugriff auf eine Tastatur oder ein interaktives Terminal ab, daher werden sie als API-Anleitung gezeigt und haben keine erfasste Ausgabe.
Das Python Tutorial von DelftStack bündelt Anleitungen zu Eingabe, Strings, Dateien und vielen weiteren Alltagsthemen in einer klaren Lernreihenfolge.
Tastendruck mit dem keyboard-Modul in Python erkennen
Das Paket keyboard kann einen Hook installieren, der Tastaturereignisse empfängt. Installieren Sie es in derselben Python-Umgebung, die Ihr Programm ausführt, mit python -m pip install keyboard. Auf manchen Betriebssystemen erfordern globale Tastatur-Hooks möglicherweise erhöhte Rechte oder werden von der Desktop-Umgebung eingeschränkt. Ein Hook empfängt sowohl Ereignisse für das Drücken als auch für das Loslassen einer Taste; filtern Sie nach event.event_type == "down", wenn die Aufgabe darin besteht, Tastendrücke zu melden. Eine typische Integration registriert einen Callback mit keyboard.hook(on_key_event) und lauscht weiter mit keyboard.wait("esc"). Entfernen Sie einen Hook mit keyboard.unhook_all(), wenn das Lauschen endet, der Prozess aber andere Arbeit fortsetzt. Halten Sie Callbacks kurz, damit die Ereignisbehandlung den Rest des Programms nicht verzögert.
Dieses eigenständige Beispiel verwendet Beispiel-Ereignisdatensätze, um die Filterlogik eines Hook-Callbacks zu zeigen. Es liest keine physischen Tastaturereignisse; verwenden Sie dafür die oben beschriebene Paketintegration.
events = [
{"name": "a", "event_type": "down"},
{"name": "a", "event_type": "up"},
]
for event in events:
if event["event_type"] == "down":
print(f"Key {event['name']} pressed")
Key a pressed
Tastendruck mit dem pynput-Modul in Python erkennen
Verwenden Sie pynput, wenn das Programm separate Handler für das Drücken und Loslassen von Tasten benötigt. Installieren Sie es mit python -m pip install pynput. Ein Listener wird mit keyboard.Listener(on_press=on_press, on_release=on_release) erstellt und mit seinem Kontextmanager oder mit start() gestartet. Im Callback für das Drücken stellen Zeichentasten einen char-Wert bereit, während Sondertasten wie Escape dies möglicherweise nicht tun; prüfen Sie, ob das Attribut existiert und nicht None ist, bevor Sie es lesen. Der Callback für das Loslassen kann die Taste mit keyboard.Key.esc vergleichen und False zurückgeben, um den Listener zu stoppen. Rufen Sie join() auf, wenn der Haupt-Thread warten soll, bis der Listener beendet ist. Dieser paketspezifische Callback-Ablauf wird hier nicht ausgeführt, weil pynput in der bereitgestellten Laufzeitumgebung nicht verfügbar ist; Berechtigungen des Betriebssystems und Einschränkungen der Desktop-Sitzung können den Zugriff auf Systemeingaben ebenfalls beeinflussen.
Tastendruck mit dem readchar-Modul in Python erkennen
Für eine Befehlszeilen-Eingabeaufforderung, die jeweils eine Taste benötigt, liest readchar eine Taste, ohne dass der Benutzer die Eingabetaste drücken muss. Installieren Sie es mit python -m pip install readchar. Rufen Sie in einer Schleife readchar.readkey() auf, um synchron auf eine Terminal-Eingabe zu warten, und vergleichen Sie dann die zurückgegebene Taste mit "q", um die Schleife zu beenden. Geben Sie andere zurückgegebene Tasten aus, sobald sie eintreffen. Dies eignet sich für die Interaktion im Terminal, nicht für einen globalen Hook, der Tasten überwacht, während eine andere Anwendung den Fokus hat. Pfeiltasten und andere Sondertasten können durch mehrstellige Sequenzen dargestellt werden; vergleichen Sie sie daher beim Umgang mit ihnen mit den für das Terminal und die Bibliothek dokumentierten Werten. Diese paketspezifische Interaktion wird hier nicht ausgeführt, weil readchar in der bereitgestellten Laufzeitumgebung nicht verfügbar ist.
Fazit
Wählen Sie keyboard für einen Hook, der auf System-Tastaturereignisse reagiert, pynput, wenn Callbacks für Drücken und Loslassen oder eine explizite Steuerung des Listener-Lebenszyklus zum Programm passen, und readchar für eine einfache Befehlszeilen-Eingabeaufforderung mit einzelnen Tasten. Die ersten beiden lauschen auf Ereignisse jenseits einer Eingabeaufforderung und können von Berechtigungen des Betriebssystems abhängen. readchar liest vom aktiven Terminal und bietet keine globale Überwachung. Installieren Sie das gewählte Paket in der Umgebung, die Ihr Skript ausführt, und wählen Sie eine klare Stoppbedingung wie Escape oder q, damit der Listener oder die Leseschleife vorhersehbar enden kann.