공유 블로그

해당 기능은 입력한 시간초 까지 대기중에 'ENTER'키가 들어오면 종료하는 함수를 제작해 봤습니다.

 

설치

pip install keyboard

 

코드

from threading import Timer
import time
import keyboard


# 대기시간(출력기능 포함)
def waittingTimer(waitTime: int, msg: str = None, showPrintUnit=10):
    def message(i, message, msg=msg):
        if '완료' in message:
            print(f'\t[{msg} : {i}초에 {message}]')
        else:
            print(f'\t[{msg} : {i}초 이상 {message}]')

    print(f'{waitTime}초 이전에 종료하면 "ENTER"키를 누르십시오 . . .')

    flag = [True, 0]

    def timer(flag):
        while True:
            if t.finished.is_set():
                break

            if flag[1] >= waitTime:
                break

            flag[1] += 1
            if msg is not None:
                if waitTime < showPrintUnit:
                    message(flag[1], '대기중...')

                elif not (flag[1] % showPrintUnit):
                    message(flag[1], '대기중...')

            time.sleep(1)

        flag[0] = False

    startTimer = False
    while flag[0]:
        if keyboard.is_pressed('enter'):
            print('Enter키를 눌러 프로그램을 종료합니다.')
            break

        if not startTimer:
            t = Timer(0, timer, args=(flag,))
            t.start()
            startTimer = True
		
        # 과부하 방지를 위함
        time.sleep(.01)

    t.cancel()
    message(flag[1], '완료!')
    return True


if __name__ == '__main__':
    waittingTimer(10, '테스트', 1)

 

결과

공유하기

facebook twitter kakaoTalk naver band kakaostory Copy URL