Подскажите, как сделать горячую клавишу для выключения скрипта
Подскажите, как сделать горячую клавишу для выключения скрипта
Например, вот рабочий скрипт
while True:
zadacha1()
zadacha2()
zadacha3()
zadacha4()
и вот надо как то сделать, чтобы, например, в любое время и в любой функции выполнения скрипта сработала клавиша например F5 что бы скрипт выключится и по возможности еще добавить клавишу F6 пауза
Ответы (2 шт):
import sys
import keyboard
while True:
if(keyboard.is_pressed('f5'):
sys.exit(0)
if(keyboard.is_pressed('f6'):
keyboard.wait('f6')
zadacha1()
zadacha2()
zadacha3()
zadacha4()
На основе вашей задачи я реализовал воспроизводимый пример. Здесь мы реализуем две глобальные переменные paused и exit_loop, далее мы создаём для них функции, которые позже назначим как горячие клавиши через модуль keyboard, для проверки я реализовал метод zadacha1() которая просто возвращает отметку от времени, код выглядит следующим образом:
import keyboard
import datetime
import time
def zadacha1():
#print hello with date and time now
time.sleep(1)
print("отметка времени: ", datetime.datetime.now())
paused = False
exit_loop = False
def pause_loop():
global paused
paused = not paused
if paused:
print("\npaused = True\n")
else:
print("\npaused = False\n")
def exit_program():
global exit_loop
exit_loop = True
print("\nexit_loop = True\n")
# Устанавливаем сочетание клавиш для паузы
keyboard.add_hotkey('f5', pause_loop)
keyboard.add_hotkey('f6', exit_program)
while True:
if not paused:
# Ваш код для выполнения задачи
zadacha1()
if exit_loop:
print('\nПрограмма завершена\n')
break
Результат:
отметка времени: 2023-06-13 08:56:46.483409
отметка времени: 2023-06-13 08:56:47.484627
отметка времени: 2023-06-13 08:56:48.485523
отметка времени: 2023-06-13 08:56:49.485673
отметка времени: 2023-06-13 08:56:50.485943
paused = True
отметка времени: 2023-06-13 08:56:51.486116
paused = False
отметка времени: 2023-06-13 08:56:56.388918
отметка времени: 2023-06-13 08:56:57.389715
отметка времени: 2023-06-13 08:56:58.390017
отметка времени: 2023-06-13 08:56:59.390176
отметка времени: 2023-06-13 08:57:00.391006
отметка времени: 2023-06-13 08:57:01.391129
exit_loop = True
отметка времени: 2023-06-13 08:57:02.391734
Программа завершена
Сначала мы нажали на клавишу f6 воспроизведя паузу, учитывайте что после нажатия инструкция будет воспроизведена последний раз. Далее мы нажимаем f5 для завершения программы путём вызова break, после нажатия так же цикл будет воспроизведен один раз.