0

我是 Python 新手,我想编写一个脚本来监听左、右或中间(鼠标滚轮)按钮单击事件。单击鼠标左键或右键时,它应该什么也不做。换句话说,脚本应该阻止鼠标左右点击。

但是当单击鼠标中键时,脚本应该按下退出按钮。

我已经找到了一个监听鼠标事件的库:Pynput。问题是脚本必须在 Windows XP 机器上运行,所以我必须使用 Python 3.4.4,而且我找不到这个 Python 版本的 Pynput 版本。

我现在的问题是:如何在 WindowsXP 的 Python 3.4.4 中收听鼠标点击和发送键盘事件?

更新:

现在 Pynput 已正确安装并且可以正常工作了。我写了这个:

from pynput import mouse
from pynput.keyboard import Key, Controller

keyboard = Controller()

def on_click(x, y, button, pressed):
    if button == mouse.Button.middle:
        keyboard.press(Key.esc)
        keyboard.release(Key.esc)
        #after pressing the esc-key: stopPropagation(middle mouse click should not be forwarded to windows)
    if button == mouse.Button.left:
        print("left")
        #stopPropagation(left mouse click should not be forwarded to windows)
    if button == mouse.Button.right:
        print("right")
        #stopPropagation(right mouse click should not be forwarded to windows)

# Collect events until released
with mouse.Listener(
        on_click=on_click) as listener:
    listener.join()

我怎样才能完成我在#评论中写的内容?甚至可以做这样的事情,比如用 Python 防止在窗口中单击鼠标吗?另外我不明白的是,当我运行程序并且我想退出它(使用 ctrl+c)时,我必须按 100 次,然后它会显示:

Traceback (most recent call last):
  File "C:\Users\path\hello.py", line 22, in <module>
  File "C:\Python34\lib\site-packages\pynput-1.3.10-py3.6.egg\pynput\_util\__init__.py", line 178, in join
  File "C:\Python34\lib\threading.py", line 1060, in join
    self._wait_for_tstate_lock()
  File "C:\Python34\lib\threading.py", line 1076, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt

为什么?我该如何解决这个问题?

4

0 回答 0