Нужно остановить программу по нажатию клавиши

Рейтинг: 0Ответов: 1Опубликовано: 07.02.2023

Мне нужно сделать так, чтобы мой таймер перестал идти по нажатию конкретной клавиши.

код:

    if a == cnty:
    print("Отсчёт пошёл. Чтобы остановить его, нажмите Enter")
    while a == cnty:
        sec = 0
        while sec == sec:
            if keyboard.is_pressed('enter'):
                break
            sec += 1
            time.sleep(1)
            print(sec)

После нажатия клавиши таймер почему-то всё ещё продолжает идти. Как правильно нужно написать такую программу?

Ответы

▲ 2

Счетчик остановится, если нажать Enter именно в момент проверки нажатия. Если не успеть нажать клавишу в момент проверки, то дальше идет секундная задержка и никакое условие не проверяется.

Так что проверку нажатия клавиши нужно реализовывать через обработчик события нажатия на кнопку. Зарегистрировать обработчик можно через функцию add_hotkey из библиотеки keyboard:

import keyboard
import time

run_timer = True

def stop_timer():
    global run_timer
    run_timer = False

keyboard.add_hotkey('enter', callback=stop_timer)

print("Отсчёт пошёл. Чтобы остановить его, нажмите Enter")
sec = 0

while run_timer:
    time.sleep(1)
    sec += 1
    print(sec)