单击一次 pynput 时双击

Double click when clicking once pynput

尝试做一个当你用pynput点击鼠标左键一次时为你双击的程序。我有以下代码,但如果我 运行 代码,我的鼠标就会出现故障并停止工作。

from pynput.mouse import Listener, Button, Controller

mouse = Controller()

def on_click(x, y, button, pressed):
    if pressed == True:
        mouse.click(Button.left, 2)
    else:
        pass

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

除此之外,按下 "F10" 的实现如何使 1 次点击就像双击一样,再次按下 "F10" 会禁用它,所以 1 次点击就像 1 次点击可能吗?

哦,我可能发现了你的问题, 两个可能的原因:

  1. 在您的脚本中,当您按下鼠标时 button.It 将调用函数 on_click。然后它将 mouse.click(Button.left, 2)。但是这段代码也会调用 on_click。所以这将是一个无穷无尽的 loop.Finally,你会发现你的鼠标不会 responding.So 我认为你应该使用另一种方式来做到这一点。
  2. pynput官方文档中,好像可以在macOS下使用(可能windows不能用it.And我也发现只用mouse.click(Button.left, 2)在我的电脑上,我的 python 将没有响应。(无法停止)。也许你应该直接使用 .press.release

Also in addition of this, how would the implementation of pressing "F10" enables that 1 click acts like double click and pressing "F10" again would disable it.

所以这似乎是一个开关,你可以使用一个 global 变量来做 that.There 是使用 pynput 做一个开关的最小例子。(这不会打印 Mode is on如果不按F10,再按F10就不会打印了)。

# import win32api,win32con
from pynput.mouse import Controller
from pynput import keyboard
from pynput.keyboard import Key

mouse = Controller()
Mode = False

def on_press(key):
    global Mode
    if key == Key.f10:
        if Mode:
            Mode = False
        else:
            Mode = True

listener = keyboard.Listener(on_press=on_press)
listener.start()
while True:
    if Mode:
        print("Mode is on")