我在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,現在它完美的工作!最大。 –