You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python实现按住鼠标左键自动重复点击功能遇阻求助

修复后的自动点击程序

原代码存在几个核心问题:Listener.join()会阻塞主线程导致后续代码无法执行、多进程间全局变量不共享无法传递状态、未处理鼠标左键释放事件、变量未初始化可能引发报错。以下是修正后的代码:

from pynput.mouse import Button, Controller, Listener
import time
import multiprocessing as mp
import keyboard

mouse = Controller()
sleep_time = 0.01

def clicker(click_event):
    # 事件触发时持续执行点击
    while click_event.is_set():
        mouse.click(Button.left)
        time.sleep(sleep_time)

def on_click(x, y, button, pressed):
    if button == Button.left:
        if pressed:
            # 按下左键时启动点击逻辑
            click_event.set()
        else:
            # 释放左键时停止点击逻辑
            click_event.clear()

if __name__ == "__main__":
    # 创建进程事件,用于跨进程控制点击启停
    click_event = mp.Event()
    # 启动点击子进程
    p1 = mp.Process(target=clicker, args=(click_event,))
    p1.start()

    # 启动鼠标监听器(非阻塞模式)
    listener = Listener(on_click=on_click)
    listener.start()

    # 主循环处理退出逻辑
    while True:
        # 按Esc键退出程序(可自行替换为其他按键)
        if keyboard.is_pressed("esc"):
            click_event.clear()
            p1.terminate()
            listener.stop()
            break

关键改动说明:

  • 用multiprocessing.Event替代全局变量,实现主进程与子进程的可靠状态通信
  • 鼠标监听器改为非阻塞启动,避免主线程被卡死
  • 完善on_click函数,同时处理左键按下和释放事件,实现点击的启停控制
  • 退出时执行清理操作,确保程序优雅终止

内容的提问来源于stack exchange,提问作者OttoPlayZ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 08:28:33