【问题标题】:AttributeError: 'Move' object has no attribute 'button'; mouse listener with pynputAttributeError: \'Move\' 对象没有属性 \'button\';使用 pynput 的鼠标侦听器
【发布时间】:2022-12-11 04:15:06
【问题描述】:

我想要监视鼠标事件的东西,更具体地说是左键单击。所以我已经在使用 libary pynput,所以我查阅了他们的文档。 所以我只是复制粘贴了他们的代码“监听鼠标监听器的同步事件”。 这是使用的代码:


def on_click(x, y, button, pressed):
    print('{0} at {1}'.format(
        'Pressed' if pressed else 'Released',
        (x, y)))
    if not pressed:
        # Stop listener
        return False


with mouse.Events() as events:
    for event in events:
        if event.button == mouse.Button.left:
            break
        else:
            print('Received event {}'.format(event))

但是一旦我移动鼠标,我就会收到以下错误: “如果 event.button == mouse.Button.left: AttributeError:“移动”对象没有属性“按钮”” 如果我不移动鼠标,只按左键单击,它就会按预期工作。但我想先移动我的鼠标,然后按左键单击以确认鼠标指向的位置。

提前致谢

【问题讨论】:

  • 你的按钮是不同的 Button vs button
  • 您需要首先检查该事件实际上是鼠标单击事件,因为这是唯一一种有意义地指定特定鼠标按钮的事件。
  • 我如何检查我是否首先获得了鼠标点击事件?我应该把它放在哪里?在for循环之前?

标签: python mouselistener pynput


【解决方案1】:

我遇到了同样的问题。

主要问题是 event 可能没有属性 .button,如错误所示。

mouse.Events()可以有3种主要类型:pynput.mouse.Events.Clickpynput.mouse.Events.Movepynput.mouse.Events.Scroll(据我所知)

在这三个中,其中最后两个肯定没有属性.button

所以如果我们要处理这个问题,我想我们需要使用异常处理。
检查下面的代码。

from pynput import mouse

with mouse.Events() as events:
    for event in events:
        try:
            if event.button == mouse.Button.right:
                print('Right button clicked!')
                break
        except: pass
        finally:
            print('Received event {}'.format(event))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-05
    • 2021-02-06
    • 2020-03-25
    • 2019-07-25
    相关资源
    最近更新 更多