鼠标发生移动后 ,静止在某位置指定时间后即可触发点击事件
支持多种点击事件,支持快捷键触发,支持自定义配置
有其他更好的思路 ,支持有偿定制,留言留下联系方式,看到会加你
python"># !/usr/bin/python3
# -*- coding:utf-8 -*-
"""
@author: JHC000abc@gmail.com
@file: test.py
@time: 2024/4/11 0:04
@desc:"""
import pyautogui
import keyboard
import time
from threading import Thread
import atexitclass MouseClick(object):""""""def __init__(self,time_click_interval):atexit.register(self.exit_handler)# 位置收集开关self.flag_open_close = True# 点击间隔self.time_click_interval = time_click_interval# 点击模式self.click_mode = 1# 此处静止 点击过self.forbidden = Falseself.thread = Thread(target=self.monitor_keyboard)self.thread.start()def exit_handler(self):"""程序退出自动执行:return:"""input("\n\n\n程序终止,回车退出")def monitor_keyboard(self):""":return:"""keyboard.on_press(self.on_combination_pressed_click)keyboard.on_press(self.on_combination_pressed_doubleClick)keyboard.on_press(self.on_combination_pressed_tripleClick)keyboard.on_press(self.on_combination_pressed_down)keyboard.on_press(self.on_combination_pressed_pause)keyboard.on_press(self.on_combination_pressed_click_right)keyboard.wait('esc')def monitor_mouse_move(self, x, y):""":param x::param y::return:"""if self.flag_open_close:if self.click_mode == 1:pyautogui.click(x, y)print(f"单击:x:{x}, y:{y}")elif self.click_mode == 2:pyautogui.doubleClick(x, y)print(f"双击:x:{x}, y:{y}")elif self.click_mode == 3:pyautogui.tripleClick(x, y)print(f"三击:x:{x}, y:{y}")elif self.click_mode == 4:pyautogui.rightClick(x, y)print(f"右键单击:x:{x}, y:{y}")def on_combination_pressed_pause(self,event):"""单击:param event::return:"""if keyboard.is_pressed('ctrl') and keyboard.is_pressed('`'):if self.flag_open_close:self.flag_open_close = Falseprint("【暂停】:ctrl+`")else:self.flag_open_close = Trueprint("【开启】:ctrl+`")def on_combination_pressed_click(self,event):"""单击:param event::return:"""if keyboard.is_pressed('ctrl') and keyboard.is_pressed('shift') and keyboard.is_pressed('1'):self.click_mode = 1print("【单击模式】:ctrl+shift+1")def on_combination_pressed_click_right(self,event):"""单击:param event::return:"""if keyboard.is_pressed('tab'):self.click_mode = 4print("【右键单击模式】:tab")def on_combination_pressed_doubleClick(self,event):"""双击:param event::return:"""if keyboard.is_pressed('ctrl') and keyboard.is_pressed('shift') and keyboard.is_pressed('2'):self.click_mode = 2print("【双击模式】:ctrl+shift+2")def on_combination_pressed_tripleClick(self,event):"""三击:param event::return:"""if keyboard.is_pressed('ctrl') and keyboard.is_pressed('shift') and keyboard.is_pressed('3'):self.click_mode = 3print("【三击模式】:ctrl+shift+3")def on_combination_pressed_down(self,event):"""长按 可拖动窗体:param event::return:"""if keyboard.is_pressed('alt'):pyautogui.mouseDown()print("【左键长按模式】:alt")def process(self):""":return:"""print("鼠标手辅助器 启动")print("点击间隔:",self.time_click_interval )prev_x, prev_y = pyautogui.position()while True:try:current_x, current_y = pyautogui.position()if current_x != prev_x or current_y != prev_y:prev_x, prev_y = current_x, current_yelse:start_time = time.time()while True:new_x, new_y = pyautogui.position()if new_x != current_x or new_y != current_y:self.forbidden = Falsebreakif time.time() - start_time >= self.time_click_interval:if not self.forbidden:self.monitor_mouse_move(new_x, new_y)self.forbidden = Truebreakif keyboard.is_pressed("esc"):print("【退出】ESC")breakexcept Exception as e:print("【错误】:请勿将鼠标移动到边缘区域")if __name__ == '__main__':time_click_interval = input("请输入点击间隔时间(单位:秒):")# time_click_interval = 3mc = MouseClick(float(time_click_interval))mc.process()