본문 바로가기
파이썬

파이썬 How to detect ESCape keypress in Python?

by º기록 2020. 10. 8.
반응형

사용자가 ESCape 키를 눌러 프로세스를 중단하도록하는 명령 창 (Windows 7, Python 3.1)에서 프로세스를 실행하고 있습니다. 그러나 ESCape 키를 눌러도 아무 작업도 수행되지 않는 것 같습니다.-(루프가 끊기지 않습니다. 또한 IDE (Wing) 내에서 스크립트 실행을 시도했지만 다시 루프를 중단 할 수 없습니다.

다음은 개념 증명 테스트의 일부를 제거한 버전입니다.

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!

누군가 내가 어디로 잘못 가고 있는지 말해 줄 수 있다면 가장 감사 할 것입니다.

 

해결 방법

 

Python 3 문자열은 유니 코드이므로 비교를 위해 바이트로 인코딩해야합니다. 이 테스트를 시도하십시오.

if msvcrt.kbhit() and msvcrt.getch() == chr(27).encode():
    aborted = True
    break

또는이 테스트 :

if msvcrt.kbhit() and msvcrt.getch().decode() == chr(27):
    aborted = True
    break

또는이 테스트 :

if msvcrt.kbhit() and ord(msvcrt.getch()) == 27:
    aborted = True
    break

 

참조 페이지 https://stackoverflow.com/questions/5137238

 

 

반응형

댓글