【问题标题】:Mouse click on scrolling鼠标点击滚动
【发布时间】:2020-11-30 23:19:28
【问题描述】:

所以我正在尝试编写一个 python 程序,当我用鼠标滚动时,它会模拟鼠标右键单击。我尝试使用 pynput,这就是我所拥有的:

from pynput.mouse import Button, Controller, Listener

mouse = Controller()

def on_scroll(x, y, dx, dy):
    mouse.click(Button.left)
    print('Scrolled {0}'.format(
        (x, y)))


with Listener(
        on_scroll=on_scroll) as listener:
    listener.join()

每次我运行这个程序并滚动时,我的电脑开始滞后,鼠标也开始滞后。然后,由于滞后,我不得不强制关闭计算机。我该怎么办?

提前谢谢你!

【问题讨论】:

    标签: python-3.x pynput


    【解决方案1】:

    docs 提到您不应该在滚动代码中放置阻止操作。由于我可以重现您的问题,因此我假设 mouse.click(Button.left) 是一个阻止操作。

    可以使用以下方式显示:

    from pynput.mouse import Controller, Events, Button
    
    mouse = Controller()
    
    if __name__ == '__main__':
        with Events() as events:
            for event in events:
                if isinstance(event, Events.Scroll):
                    print(f'Scrolling event: {event}')
                    mouse.click(Button.left)
                print(event)
    

    这将正确运行鼠标移动,直到您开始滚动,然后它陷入无限循环。我会尝试看看是否有替代解决方案并将其编辑为答案,但目前我还没有找到。

    编辑

    我目前还没有找到任何解决方案,this 帖子中提到该问题可能是特定于操作系统的。我可以在 Windows 上重现您的声明,因此您可能想在 pynput 他们的包页面上创建一个问题。

    【讨论】:

    • 谢谢!做到了:)
    • 如解决方案中所述,它是一次性修复。它会运行一次,之后程序会挂在mouse.click 上。所以我假设他们的代码代码中存在更大的问题,这使得mouse.click 挂在 Windows 上。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-21
    相关资源
    最近更新 更多