Не срабатывает отслеживание кнопки в keyboard на второй итерации
Кратое описание того что снизу: код просто обновляет страницу каждые три секунды, но если в эти три секунды была нажата кнопка 1
то она его останавливает.
Увы но работает только при первой итерации, в последующих она не отслеживает нажатие на кнопку вообще, выдает только False
.
Почему у него такое поведение? Виноват цикл? Как тогда это заменить?
UPD. Вероятно это проблема не только модуля keyboard
так как при использовании программ для макросов, ситуация та же самая. Думаю проблема глубже, но где не представляю. Отключение всех служб для защиты типа брандмауэра и тд. не помогло.
import threading
import time
import keyboard
import pyautogui as pag
import pygetwindow as gw
while_run = True
class WindowNotFoundException(Exception):
pass
def button_callback():
print("Button was pressed!")
global while_run
while_run = False
def wait_for_button_press(timeout, _button_callback):
def wait():
start_time = time.time()
while time.time() - start_time < timeout:
if keyboard.is_pressed("1"):
return _button_callback()
time.sleep(0.2)
wait_thread = threading.Thread(target=wait)
wait_thread.start()
wait_thread.join()
def main():
while while_run:
# Активируем окно
win = gw.getWindowsWithTitle('TelegramDesktop')
if not win:
raise WindowNotFoundException
win[0].activate()
time.sleep(0.1)
# ищем нужное место
image_path = "assets/find_for_update.png"
location = pag.locateCenterOnScreen(image=image_path, minSearchTime=0)
# клика и перезагрузка
pag.click(location)
pag.press("F5")
wait_for_button_press(3, button_callback)
if __name__ == '__main__':
try:
main()
except gw.PyGetWindowException:
print("Была нажата кнопка. Программа закрывается")
except WindowNotFoundException:
print("Окно не было найдено")