pyautogui: события наведения не запускаются в Windows

Я использую Python 3.x с библиотекой pyautogui. Когда я перемещаю мышь к значку Windows на панели задач, значок меняет свой цвет (из-за события наведения). Затем я нажимаю на него, чтобы открыть меню.

Теперь к моей проблеме:

После перемещения мыши с помощью pyautogui.moveto(x, y) курсор мыши оказывается над символом Firefox, НО зависание не срабатывает (см. прикрепленный снимок экрана). Только после того, как я двигаю мышь вручную, она срабатывает и подсвечивается.

Это ошибка? Как я могу это исправить?

no_hover_event_with_pyautogui


person Ufuk A    schedule 13.07.2020    source источник
comment
Будет ли срабатывать эффект наведения, если вы используете pyautogui.moveto(x, y, pyautogui.easeOutQuad)?   -  person H. pap    schedule 13.07.2020
comment
К сожалению, это не помогло. Даже когда я двигаю курсор очень медленно, он не срабатывает. Я записал видео и загрузил его: imgur.com/a/P5of3Ja (видео в реальном времени, просто кадров не хватает :) ). Вы можете видеть, что даже кнопки слева (Питание, Настройки) слегка подсвечиваются, но не элементы меню.   -  person Ufuk A    schedule 13.07.2020
comment
Я думаю, что это может быть проблемой здесь. Тот факт, что он прыгает и дрожит на месте, а не плавно, как когда вы делаете это вручную. Вы можете использовать pywin32. Может быть, эта библиотека будет лучше для этого.   -  person H. pap    schedule 14.07.2020


Ответы (1)


Аналогичный пост описывает ту же проблему с калькулятором. Это ошибка, скорее всего, из-за самого Windows API, см. отчет о проблеме здесь. Решение было найдено, но оно не было реализовано, и ошибка все еще сохраняется.
Я могу воспроизвести ошибку на окнах с Python 3.6.8 и pyautogui 0.9.50 с помощью следующего кода:

import pyautogui
pyautogui.press('win')
pyautogui.moveTo(200, 820, duration=3)
pyautogui.scroll(-900)

Смотрите видео здесь. Я изменил источник pyautogui на предложенное в сообщении решение, и оно работает.

Решение:

  1. Создайте форк репозитория кода pyautogui на github.
  2. Реализуйте решение, указанное в проблеме 314.
  3. Удалить pyautogui
  4. Переустановите pyautogui из исходников из разветвленного репозитория.

Примечание. Это всего лишь настройка, и помните, что сопровождающий pyautogui решил не делать эту реализацию по определенной причине. Поэтому убедитесь, что в какой-то момент вы снова переустановите официальную версию.

person jamoreiras    schedule 14.07.2020