将按住左键转换为多次左键单击

时间:2019-02-08 16:28:17

标签: python onclick click

我正在尝试编写一个Python程序,该程序会将按下的左键转换为多次单击。本质上,单击鼠标左键时只是左键发送垃圾邮件。我已经编写了执行此操作的代码,除了它陷入了循环之外,因为它使用发送的左键触发自身。这是我的代码:

from pynput.mouse import Listener
from threading import Thread
import pyautogui
import time

flag = False

def clicking():
    while flag:
        time.sleep(0.5)
        pyautogui.click(button='left')
        print("Clicking...")


def clicked(x, y, button, pressed):
    global flag
    if pressed == True:
        if button == button.left:
            print("Left Click")
            flag = True
            thread = Thread(target=clicking)
            thread.start()
    else:
        flag = False


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

如果触发自身并陷入循环中,我将如何修改此代码以使其停止。谢谢!

1 个答案:

答案 0 :(得分:0)

我将此代码用作自动点击程序,您可以进行一些调整以将侦听器设置为左键单击。

import time
import threading
from pynput.mouse import Button, Controller
from pynput.keyboard import Listener, KeyCode, Key

def on_press(key):
if key == start_stop_key:
    if click_thread.running:
        click_thread.stop_clicking()
    else:
        click_thread.start_clicking()
elif key == exit_key:
    click_thread.exit()
    listener.stop()

class ClickMouse(threading.Thread):
def __init__(self, delay, button):
    super(ClickMouse, self).__init__()
    self.delay = delay
    self.button = button
    self.running = False
    self.program_running = True

def start_clicking(self):
    self.running = True

def stop_clicking(self):
    self.running = False

def exit(self):
    self.stop_clicking()
    self.program_running = False

def run(self):
    while self.program_running:
        while self.running:
            mouse.click(self.button)
            time.sleep(self.delay)
        time.sleep(0.1)

start_stop_key = KeyCode(char='+')
#key to start
exit_key = KeyCode(char='¡')
#key to stop the iteration
button = Button.left
#Either Button.left or Button.right
delay = 0.1
#Time between clicks

click_thread = ClickMouse(delay, button)
mouse = Controller()
click_thread.start()

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

祝你好运