Двойной щелчок при нажатии один раз

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


person Daniel    schedule 05.04.2020    source источник
comment
Я не могу использовать mouse.click(Button.left, 2). Моя мышь не работает.   -  person jizhihaoSAMA    schedule 06.04.2020
comment
Да, я думаю, это проблема. Но эта функция есть в документации pynput. pynput.readthedocs.io/en/latest/   -  person Daniel    schedule 07.04.2020


Ответы (1)


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

  1. В вашем скрипте, когда вы нажмете кнопку мыши, она вызовет функцию on_click. Затем она вызовет mouse.click(Button.left, 2). Но этот код также вызовет on_click. Так что это будет бесконечный цикл. Наконец, вы обнаружите, что ваша мышь не отвечает. Поэтому я думаю, что вы должны использовать другой способ сделать это.
  2. В официальном документе pynput кажется, что его можно использовать в macOS (возможно, Windows не может его использовать. И я также обнаружил, что если я использую только mouse.click(Button.left, 2) на своем ПК, мой питон не будет отвечать. (Его нельзя было остановить) .Может быть, вам следует просто использовать .press и .release напрямую): введите здесь описание изображения

Кроме того, в дополнение к этому, как реализация нажатия «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")

person jizhihaoSAMA    schedule 07.04.2020