【问题标题】:pyautogui: Hover events not triggered on Windowspyautogui:悬停事件未在 Windows 上触发
【发布时间】:2020-11-02 04:04:27
【问题描述】:

我正在使用 Python 3.x 和库 pyautogui。当我将鼠标移动到任务栏上的窗口图标时,图标会改变它的颜色(因为悬停事件)。然后我点击它打开菜单。

现在是我的问题:

pyautogui.moveto(x, y)移动鼠标后,鼠标光标在火狐符号上方,但没有触发悬停(见附件截图)。只有在我手动移动鼠标后,它才会被触发并突出显示。

这是一个错误吗?我该如何解决这个问题?

【问题讨论】:

  • 使用pyautogui.moveto(x, y, pyautogui.easeOutQuad)会触发悬停效果吗?
  • 不幸的是它没有帮助。即使我非常缓慢地移动光标,它也不会触发。我录制了一个视频并上传了它:imgur.com/a/P5of3Ja(视频是实时的,只是帧数不够:))。您可以看到,即使是左侧的按钮(电源、设置)也略微突出显示,而不是菜单项。
  • 我认为这可能是这里的问题。事实上,它会跳跃并在位置上抖动,而不是像您手动操作时那样流畅。你可以使用pywin32。也许那个图书馆会更好。

标签: python windows user-interface automation pyautogui


【解决方案1】:

类似的post 描述了与计算器相同的问题。这是一个错误,很可能来自 Windows api 本身,请参阅报告的问题 here。找到了解决方案,但没有实现,bug仍然存在。
我可以使用以下代码在 Windows 上使用 Python 3.6.8 和 pyautogui 0.9.50 重现该错误:

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

见视频here。我将 pyautogui 的来源更改为帖子中建议的解决方案,它可以工作。

解决方案:

  1. 在 github 上 fork pyautogui 代码库
  2. 实施issue 314 中提到的解决方案
  3. 卸载 pyautogui
  4. 从分叉存储库的源代码重新安装 pyautogui

注意:这只是一个调整,请记住,pyautogui 维护者决定不进行此实现是有原因的。因此,请确保在某个时候再次重新安装正式版本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-19
    • 2011-01-10
    • 1970-01-01
    • 1970-01-01
    • 2013-09-30
    • 1970-01-01
    相关资源
    最近更新 更多