Ich schrieb eine kleine Routine in Python 2.7, die einige Zeit wartet (sagen wir, 10 Minuten), aber sofort beendet, wenn eine Taste vom Benutzer gedrückt wird.Python 2.7 - Wie überprüft man, ob SHIFT-Taste oder STRG + Taste gedrückt wird?
Ich bin auf Windows (7, 64-Bit), so dass ich versuchte, die msvcrt Bibliothek:
import sys
import msvcrt
from time import sleep
def sleep_sec(secstosleep, allowskip = True):
waitinterval_ms = 0.050
nwaits = int(secstosleep * 1000/waitinterval)
sys.stdout.write("\n Sleeping for %s seconds. You can press CTRL-F12 to skip.\n\n" % secstosleep)
for sl in range(0, nwaits + 1):
sleep(waitinterval_ms)
if allowskip:
# Check if User has pressed CTRL-F12 to stop waiting
if = msvcrt.kbhit():
kp = msvcrt.getch()
if kp == '\xe0':
print "\a" # Beep once
sys.stdout.write("\nSleep interrupted by User\n")
break
In der Tat es funktioniert ganz gut, mit Ausnahme der Tatsache, dass es, wenn der Benutzer bricht Hits entweder F12, F11 oder Cursor-Up-Taste: Ich habe herausgefunden, dass getch(), wenn ich F12 drücke, das '\ xe0' zurückgibt, aber es scheint, dass der gleiche Code auch von den anderen erwähnten Tasten zurückgegeben wird; keine Möglichkeit, STRG, UMSCHALT, ALT usw. einzufangen.
Ich möchte den Benutzer zwingen, stattdessen CTRL-F12 zu drücken, um zu vermeiden, dass die Wartezeit durch versehentliches Drücken einer dieser Tasten beendet wird.
Mache ich etwas falsch? Gibt es eine Möglichkeit, die STRG-, ALT- oder UMSCHALTTASTE abzufangen, die mit einer anderen Taste gedrückt wird?
Vielen Dank im Voraus, Max - Italien
Vielen Dank, Daniel, jetzt funktioniert es perfekt !. Max. –