基于pycharm的可运行于mac的简易点击工具
总述
因为mac的权限系统较为复杂,所以目前只有一个暂时版的点击工具,请自取。
操作
需要自行安装好pycharm和配置好python环境
1.添加如下代码到既有项目
ClickTool_Mac.py
import pyautogui
import threading
import time
import os
# 坐标缓存文件名
CACHE_FILE = 'click_position_cache.txt'
# 变量用于保存坐标和点击状态
click_position = None
clicking = False
click_thread = None
# 锁定对象,用于线程安全地访问共享资源
lock = threading.Lock()
def click_worker():
global clicking, click_position
while True:
with lock:
if clicking and click_position:
pyautogui.click(click_position[0], click_position[1], clicks=1)
print("执行了点击操作\n可以继续输入指令:")
time.sleep(9) # 每隔9秒点击一次,根据需要调整
def start_clicking():
global clicking, click_thread
with lock:
if click_thread is None or not click_thread.is_alive():
clicking = True
click_thread = threading.Thread(target=click_worker, daemon=True)
click_thread.start()
print("开始点击")
def stop_clicking():
global clicking
with lock:
clicking = False
print("点击已停止")
def get_and_save_position():
global click_position
click_position = pyautogui.position()
save_to_cache(click_position)
print(f"坐标已获取并保存:{click_position}")
def save_to_cache(position):
# 将坐标保存到缓存文件
with open(CACHE_FILE, 'w') as file:
file.write(f'{position[0]},{position[1]}')
def load_from_cache():
# 从缓存文件加载坐标
global click_position
if os.path.exists(CACHE_FILE):
with open(CACHE_FILE, 'r') as file:
x, y = file.read().strip().split(',')
click_position = (int(x), int(y))
print(f"从缓存中加载坐标:{click_position}")
else:
print("缓存中没有坐标,请先获取坐标。")
# 程序启动时加载坐标缓存
load_from_cache()
# 主循环保持程序运行,检测用户输入指令
print("程序运行中,输入1开始点击,输入2停止点击,输入3获取坐标,输入其他键无效,输入Esc退出程序。")
print("----------------------start----------------------")
try:
while True:
user_input = input("请输入指令:\n")
if user_input == '1':
start_clicking()
elif user_input == '2':
stop_clicking()
elif user_input == '3':
get_and_save_position()
elif user_input.lower() == 'esc' or user_input == '\x1b': # 检测Esc键
break
else:
print("无效指令,请重新输入。")
except KeyboardInterrupt:
pass # 允许通过Ctrl+C中断程序
finally:
# 确保在退出前停止点击
stop_clicking()
2.权限配置,在下图部分勾选pycharm
3.然后在pycharm可正常运行该点击工具
注:
1.上述截图来自个人测试
2.本文描述粗浅,如有问题,还请见谅,告知本人后会及时更正
3.上述表述如有问题,还请斧正