Wie zu erkennen, zu Entkommen Tastendruck in Python?
Läuft bei mir ein Prozess in einem Kommando-Fenster (Windows 7, Python 3.1), wo ich möchte, dass der user, um den Vorgang abzubrechen drücken Sie die ESC-Taste. Allerdings, drücken Sie die ESC-Taste nicht angezeigt wird, etwas zu tun : - (die Schleife nie bricht. Ich habe auch versucht, läuft das Skript in meiner IDE (Flügel), aber wieder, wird die Schleife nicht unterbrochen werden kann.
Folgende ist eine abgespeckte version von meinem proof-of-concept-test...
import msvcrt
import time
aborted = False
for time_remaining in range(10,0,-1):
# First of all, check if ESCape was pressed
if msvcrt.kbhit() and msvcrt.getch()==chr(27):
aborted = True
break
print(str(time_remaining)) # so I can see loop is working
time.sleep(1) # delay for 1 second
#endfor timing loop
if aborted:
print("Program was aborted")
else:
print("Program was not aborted")
time.sleep(5) # to see result in command window before it disappears!
Wenn jemand mir sagen könnte, wo ich vielleicht falsch läuft wäre ich sehr dankbar.
InformationsquelleAutor Alan Harris-Reid | 2011-02-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Python 3 strings sind unicode und, deshalb, müssen codiert werden, um bytes für den Vergleich. Versuchen Sie diesen test:
Oder dieser test:
Oder dieser test:
InformationsquelleAutor Adeel Zafar Soomro
Brauchen Sie nicht codieren, decodieren, chr, ord, ....
oder wenn Sie möchten, um zu sehen, "27" im code irgendwo:
InformationsquelleAutor John Machin
Sollten Sie wirklich Streifen mehr, so wie dieses hier unten:
So, hier ist das problem:
msvcrt.getch()
gibtByte
,chr(27)
zurückstring
. In Python 3 sind Sie zwei verschiedene Typen, so die "==
" - Teil wird nie funktionieren, und dieif
- Anweisung wird immer bewertet werden, daFalse
.Die Lösung sollte offensichtlich sein, um Sie.
Mehr über strings vs. bytes, aus dem Buch Dive into Python 3.
Interaktive Konsole ist sehr hilfreich bei der Fehlersuche, versuchen Sie es mehr verwenden 🙂
InformationsquelleAutor Wang Dingwei
Python-2/3-kompatiblen code:
Code-Teile stammen aus
pager
- Modul mit mehr Sachen im inneren.InformationsquelleAutor anatoly techtonik
Haben Sie versucht, mit einem anderen Schlüssel zu testen, wenn es nicht nur so, dass der Schlüssel?
Hast du auch versuchen, die Beispiele unter (http://effbot.org/librarybook/msvcrt.htm) um zu sehen, ob Sie gearbeitet?
InformationsquelleAutor Corey Richardson