2016-04-11 9 views
-1

Ich habe versucht, in einem Python-Programm Tastatureingaben zu finden. Ich möchte einen Weg finden, dies zu tun, ohne Tkinter, curses, oder raw_input zu verwenden. Hier ist, was ich gehe:Keypress Detection

while True: 
    if keypressed==1: 
     print thekey 

Weiß jemand wie das möglich ist?

+0

'win32api.GetKeyState'. – Kevin

+2

"Ich möchte einen Weg finden, dies zu tun, ohne Tkinter, Flüche oder raw_input" - warum nicht? Was macht diese Werkzeuge unerwünscht? Wenn wir Ihnen sagen, wie man es mit [Werkzeug X] macht, werden Sie sagen, dass Sie auch ohne [Werkzeug X] herausfinden wollen, wie es geht? – user2357112

+0

Wie oben erwähnt, nicht notwendig, das Rad jedes Mal neu zu erfinden –

Antwort

1

Python hat ein keyboard Modul mit vielen Funktionen. Installieren Sie es, vielleicht mit diesem Befehl:

pip3 install keyboard 

Dann nutzen Sie es in Code wie:

import keyboard #Using module keyboard 
while True:#making a loop 
    try: #used try so that if user pressed other than the given key error will not be shown 
     if keyboard.is_pressed('a'): #if key 'a' is pressed 
      print('You Pressed A Key!') 
      break #finishing the loop 
     else: 
      pass 
    except: 
     break #if user pressed other than the given key the loop will break 

Sie können mehrere Schlüsselerkennung einstellen:

if keyboard.is_pressed('a') or keyboard.is_pressed('b') or keyboard.is_pressed('c'): 
    #then do this 
0

Ich habe mir die Freiheit genommen, Ihre Frage leicht zu bearbeiten, so dass es Sinn macht und zumindest auf Windows eine Antwort hat. (IDLE nur mit der Tastatur durch die tkinter Schnittstelle zu tk in Wechselwirkung tritt.) Unter Windows ist die Antwort der msvcrt module's console io functions

import msvcrt as ms 

while True: 
    if ms.kbhit(): 
     print(ms.getch()) 

Für andere Systeme zu verwenden ist, werden Sie die entsprechenden systemspezifischen Anrufe finden müssen. Bei Posix-Systemen können diese Teile Flüche sein, von denen Sie sagten, dass Sie sie nicht benutzen sollten, aber ich weiß es nicht.

Diese Funktionen funktionieren nicht ordnungsgemäß, wenn das Programm von IDLE im Standardmodus ausgeführt wird. Das Gleiche gilt möglicherweise auch für andere Grafikmodus-IDEs.