Ich versuche, einen Weg zu finden, KeyDown und KeyUp Ereignisse in Python zu erhalten. Mit Pygame ist dies einfach mit pygame.KEYDOWN
und pygame.KEYUP
möglich, aber ich versuche, einen Weg zu finden, ohne eine GUI zu verwenden.Python-Tastaturereignisse ohne GUI (nicht blockierend)
Idealerweise würde ich in der Lage sein mag, eine Funktion isKeyDown(key)
, zu definieren, welche True
wenn key
zurückkehren würde zur Zeit gedrückt gehalten wird, oder False
zurück, wenn dies nicht der Fall, aber so oder so, wäre es mit dem Code weitermachen (Es wäre nicht blockierend). Zum Beispiel:
while True:
if not isKeyDown("a"): #If 'a' isn't currently being pressed
print ("You are not pressing 'a'")
elif isKeyDown("a"): #If 'a' is being held down when this is run
print ("You are pressing 'a'")
print ("This is the end of this program")
break
Ich habe msvcrt.getch()
versucht, aber das hat zwei Probleme:
1) Es das Programm stoppt, bis etwas gedrückt wird, und
2) sie nicht wirklich sagen, Sie, wenn der Schlüssel gedrückt wird; es kehrt einfach zurück, wenn die Taste zu der Zeit gedrückt wird. Dies kann manchmal zusammenfallen, da Windows Tastenbetätigungen wiederholt, wenn sie gedrückt gehalten werden, aber es ist unwahrscheinlich, dass dies geschieht, wenn der while
Loop mit maximaler Geschwindigkeit ausgeführt wird.
Ich habe auch msvcrt.kbhit()
, aber es stellt sich auf 1
, wenn eine Taste gedrückt wurde und nicht durch msvcrt.getch()
gelesen, und damit läuft noch in die Probleme der msvcrt.getch()
und kehrt nicht wirklich, ob ein Schlüssel tatsächlich ist wird derzeit niedergehalten.
Ich verwende Windows, so dass das curses
Modul, das viele Leute verwendet haben, um ähnliche Fragen zu beantworten, nicht verfügbar ist.
Gibt es eine Möglichkeit, eine solche isKeyDown()
Funktion in Windows ohne GUI zu definieren, vorzugsweise nur mit eingebauten Modulen? Wenn dies mit den integrierten Python-Modulen nicht möglich ist, sind Module von Drittanbietern in Ordnung, sofern sie keine GUI benötigen.
Auch mit Pygame oder Tkinter wäre in Ordnung, solange eine Möglichkeit, ihre GUIs zu deaktivieren.
Wenn dies nicht möglich ist, bitte sagen Sie mir, warum, damit ich aufhören kann, nach einer Lösung zu suchen (ich habe in den letzten Tagen versucht, etwas anderes zu tun).
Ich benutze Python 3.5.2 auf einem 64-Bit-Windows-10-Laptop.
Bitte beziehen Sie sich auf diese Frage: http: //stackoverflow.com/questions/13564851/generate-keyboard-events –
@GaurabDhama: Vollständig unabhängig. Diese Frage fragt, wie ** Eingang ** erhalten wird. Die Frage, die Sie verknüpft haben, erklärt, wie ** Eingaben generiert werden. – IInspectable
@GauravDhama Ich habe mir diese Frage angeschaut, und es erklärt, wie _Tastaturereignisse _generiert werden, während ich nach Möglichkeiten suche, Tastaturereignisse als _inputs_ zu bekommen. – Sid