Как сделать так, чтобы программа заканчивалась по нажатию клавиши?
if s == "5":
import time
sec = 0
while True:
print(sec)
time.sleep(1)
sec += 1
Ответы (1 шт):
В целях улучшения базы ruSO привожу перевод ответа, ссылкой на который поделился @Zhihar. Указания на неточности перевода приветствуются.
Это возможно с помощью модуля keyboard.
Вы можете установить этот модуль командой pip install keyboard
Несколько методов отслеживания нажатия клавиши:
Метод #1:
С помощью функции read_key():
import keyboard
while True:
if keyboard.read_key() == "p":
print("You pressed p")
break
Это остановит выполнение цикла по нажатию клавиши p.
Метод #2:
Используя функцию wait:
import keyboard
keyboard.wait("p")
print("You pressed p")
Программа будет ждать, пока вы не нажмёте p и после нажатия продолжит выполнение.
Метод #3:
Используя функцию on_press_key:
import keyboard
keyboard.on_press_key("p", lambda _:print("You pressed p"))
Это требует функции обратного вызова. Использовано _, потому что функция keyboard возвращает события клавиатуры в эту функцию.
Функция запустится по нажатию клавиши. Вы можете остановить все хуки с помощью:
keyboard.unhook_all()
Метод #4:
Этот метод приводил уже user8167727, но я не согласен с его кодом. Я тоже буду использовать функцию is_pressed, но вот так:
import keyboard
while True:
if keyboard.is_pressed("p"):
print("You pressed p")
break
Это остановит выполнение цикла по нажатию клавиши p.
Метод #5:
Вы можете использовать keyboard.record. Функция записывает все нажатые и отпущенные клавиши, пока вы не нажмёте клавишу escape или одну из тех, которую вы определили в аргументе until, и возвращает элементы списка keyboard.KeyboardEvent.
import keyboard
keyboard.record(until="p")
print("You pressed p")
Примечания:
keyboardсчитывает нажатия во всей ОС.keyboardтребует root в linux