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を押して、間違ってそれらのキーの1つを押して待機をやめないようにしたいと思います。
何か間違っていますか? CTRL、ALT、またはSHIFTを他のキーと一緒に押すのを傍受する方法はありますか?
事前のおかげで、 マックス - msvcrt.getch()
ためmsvcrt
マニュアルからイタリア
ありがとう、ダニエル、今は完璧に動作します。マックス –