Двойной щелчок при однократном нажатии pynput - PullRequest
1 голос
/ 05 апреля 2020

Попытка создать программу, которая дважды щелкает по вам, когда вы нажимаете левую кнопку мыши один раз с помощью 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 Ответ

1 голос
/ 07 апреля 2020

О, я, возможно, найду вашу проблему, две вероятные причины:

  1. В вашем скрипте, когда вы нажимаете кнопку мыши. Это вызовет функцию on_click. Затем она будет mouse.click(Button.left, 2). Но этот код также будет вызывать on_click. Так что это будет бесконечный l oop. Наконец, вы обнаружите, что ваша мышь не будет отвечать. Так что я думаю, что вы должны использовать другой способ сделать это.
  2. В pynput официальном документе, кажется, его можно использовать в macOS (возможно, windows не смог бы его использовать. И я также обнаружил, что если я использую только mouse.click(Button.left, 2) в моем P C, мой python будет не отвечайте. (Это не может быть остановлено). Возможно, вы должны просто использовать .press и .release напрямую): enter image description here

Также в дополнение к этому, как реализация нажатия клавиши «F10» позволяет сделать так, чтобы 1 клик действовал как двойной щелчок, а повторное нажатие клавиши «F10» отключило бы его.

Таким образом, этот переключатель можно использовать переменная global для этого. Существует минимальный пример использования 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")

...