基于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.上述表述如有问题,还请斧正

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值