我在python 2.7中写了一个小例程,它等待一段时间(比如说10分钟),但如果用户按下某个键,它将立即退出。Python 2.7 - 如何检查SHIFT-KEY或CTRL +键是否被按下?
我(在Windows 7 64位),所以我尝试使用MSVCRT库:
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
实际上它工作得很好,除了事实,这将打破,如果用户命中F12,F11或Cursor Up键:我发现如果按F12,getch()将返回'\ xe0',但似乎相同的代码也由其他提到的键返回;无法捕获CTRL,SHIFT,ALT等。
我想强制用户按下CTRL-F12,而不是无意中击中其中一个键。
我做错了什么?有没有办法阻止CTRL,ALT或SHIFT与另一个键一起被按下?
由于提前, 马克斯 - 意大利
非常感谢Daniel,现在它完美的工作!最大。 –