Python 自动化办公:实现指定位置定时点击

AI摘要
Deepseek提供支持

在日常办公中,重复性的鼠标点击操作常常耗费大量时间和精力。借助 Python 语言,我们可以轻松编写自动化脚本,实现指定位置的定时点击,极大提高工作效率。本文将详细介绍如何开发这样一个脚本。

一、安装pyautogui库

(一)安装必要库

脚本主要依赖pyautogui库来控制鼠标操作。在安装时,若遇到pip install pyautogui超时的情况,可使用国内镜像源来加速安装,比如使用清华大学的镜像源,命令为:

广告
广告图片

pip install pyautogui
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --default-timeout=100 pyautogui #清华大学的镜像源

该命令将安装源切换到清华镜像,并将超时时间延长到 100 秒,能有效避免因网络问题导致的安装失败。

(二)确定点击坐标

获取坐标的方法如下:

  1. 使用系统自带工具:在 Windows 系统中,可以通过 “画图” 工具打开相关截图,当鼠标移动到目标位置时,状态栏会实时显示当前坐标。
  2. 使用 Python 脚本获取:运行以下脚本,移动鼠标到目标位置,脚本会每秒更新并显示当前坐标。
  3. 使用本站坐标获取工具:Windows坐标获取
import pyautogui
import time

print("移动鼠标到目标位置,坐标将每秒钟更新一次...")
try:
    while True:
        x, y = pyautogui.position()
        print(f"当前坐标: ({x}, {y})")
        time.sleep(1)
except KeyboardInterrupt:
    print("\n程序已停止")

二、脚本编写

(一)导入模块

import pyautoguiimport timeimport logging

这里导入pyautogui用于鼠标操作,time用于设置时间间隔,logging用于记录脚本运行时的信息,方便调试和监控。

(二)配置日志

logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')logger = logging.getLogger(__name__)

通过上述代码配置日志级别为INFO,并设定日志输出格式,这样在脚本运行过程中,会按时间顺序记录操作信息。

(三)定义全局变量

# 屏幕分辨率
SCREEN_WIDTH = 1600
SCREEN_HEIGHT = 900

# 点击位置坐标(x, y) - 请根据实际情况修改这些值
CLICK_POSITIONS = [
    (800, 450),  # 第一张图黑色边框位置(示例坐标,需替换为实际坐标)
    (900, 300),  # 第二张图黑色边框位置(示例坐标,需替换为实际坐标)
    (900, 300),  # 再次点击第二张图黑色边框位置
    (750, 600)   # 第三张图黑色边框位置(示例坐标,需替换为实际坐标)
]

# 点击间隔时间(秒)
CLICK_INTERVAL = 15

这里定义了屏幕分辨率、要点击的坐标列表以及点击间隔时间。需要注意的是,CLICK_POSITIONS中的坐标需根据实际情况准确设置。

(四)编写点击函数

def click_position(x, y):
    """移动鼠标到指定位置并点击"""
    try:
        # 移动鼠标到指定位置
        pyautogui.moveTo(x, y, duration=0.5)  # 0.5秒内平滑移动
        # 点击
        pyautogui.click()
        logger.info(f"点击位置: ({x}, {y})")
        return True
    except Exception as e:
        logger.error(f"点击时出错: {str(e)}")
        return False

该函数接收坐标参数,先将鼠标平滑移动到指定位置,再执行点击操作,并记录操作信息。若出现异常,会记录错误信息并返回False。

(五)编写主函数

def main():
    """主函数:循环执行点击操作"""
    logger.info("自动化鼠标点击脚本已启动")
    logger.info(f"屏幕分辨率: {SCREEN_WIDTH}x{SCREEN_HEIGHT}")
    
    try:
        # 等待5秒,让用户有时间切换到目标窗口
        logger.info("准备开始,请在5秒内切换到目标应用窗口...")
        time.sleep(5)
        
        while True:
            for position in CLICK_POSITIONS:
                x, y = position
                logger.info(f"尝试点击坐标: ({x}, {y})")
                
                if click_position(x, y):
                    logger.info(f"成功点击坐标 ({x}, {y}),等待 {CLICK_INTERVAL} 秒")
                    time.sleep(CLICK_INTERVAL)
                else:
                    logger.warning(f"点击失败,等待 {CLICK_INTERVAL} 秒")
                    time.sleep(CLICK_INTERVAL)
                    
            logger.info("完成一轮循环,重新开始...")
                
    except KeyboardInterrupt:
        logger.info("用户中断操作,脚本已停止")
    except Exception as e:
        logger.error(f"发生错误: {str(e)}")

主函数先记录脚本启动信息,然后等待 5 秒,给用户预留切换到目标应用窗口的时间。之后进入无限循环,依次对CLICK_POSITIONS中的坐标进行点击操作,根据点击结果记录相应信息,并按设定的间隔时间等待。若用户按下Ctrl + C,脚本会捕获KeyboardInterrupt异常并正常结束;若出现其他异常,也会记录错误信息。

(六)执行主函数

if __name__ == "__main__":    main()

三、完整代码

import pyautogui
import time
import logging

# 配置日志
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__)

# 屏幕分辨率
SCREEN_WIDTH = 1600
SCREEN_HEIGHT = 900

# 点击位置坐标(x, y) - 请根据实际情况修改这些值
CLICK_POSITIONS = [
    (235, 333),  # 第一张图黑色边框位置(示例坐标,需替换为实际坐标)
    (1400, 117),  # 第二张图黑色边框位置(示例坐标,需替换为实际坐标)
    (1286, 612),  # 再次点击第二张图黑色边框位置
]

# 点击间隔时间(秒)
CLICK_INTERVAL = 15

def click_position(x, y):
    """移动鼠标到指定位置并点击"""
    try:
        # 移动鼠标到指定位置
        pyautogui.moveTo(x, y, duration=0.5)  # 0.5秒内平滑移动
        # 点击
        pyautogui.click()
        logger.info(f"点击位置: ({x}, {y})")
        return True
    except Exception as e:
        logger.error(f"点击时出错: {str(e)}")
        return False

def main():
    """主函数:循环执行点击操作"""
    logger.info("自动化鼠标点击脚本已启动")
    logger.info(f"屏幕分辨率: {SCREEN_WIDTH}x{SCREEN_HEIGHT}")
    
    try:
        # 等待5秒,让用户有时间切换到目标窗口
        logger.info("准备开始,请在5秒内切换到目标应用窗口...")
        time.sleep(5)
        
        while True:
            for position in CLICK_POSITIONS:
                x, y = position
                logger.info(f"尝试点击坐标: ({x}, {y})")
                
                if click_position(x, y):
                    logger.info(f"成功点击坐标 ({x}, {y}),等待 {CLICK_INTERVAL} 秒")
                    time.sleep(CLICK_INTERVAL)
                else:
                    logger.warning(f"点击失败,等待 {CLICK_INTERVAL} 秒")
                    time.sleep(CLICK_INTERVAL)
                    
            logger.info("完成一轮循环,重新开始...")
                
    except KeyboardInterrupt:
        logger.info("用户中断操作,脚本已停止")
    except Exception as e:
        logger.error(f"发生错误: {str(e)}")

if __name__ == "__main__":
    main()    
广告
广告图片
温馨提示 : 非特殊注明,否则均为©李联华的博客网原创文章,本站文章未经授权禁止任何形式转载;来自:未知·未知 ,欢迎您的访问!
文章链接:https://www.lilianhua.com/python-automated-office-implementing-timed-clicks-at.html
请先登录才能参与答题
距本场结束剩 00 00 00 00
轻量应用服务器 2核2G
200M峰值带宽,适用于网站搭建、Web应用、容器环境、电商独立站等
立即前往
扫码进入
扫描二维码购买
文澜千文

文澜千文

请登录以使用此功能。

思朗纤麸 木糖醇杂粮饼干粗粮消化饼干2500g高膳食纤维零食代餐小吃 思朗纤麸 木糖醇杂粮饼干粗粮消化饼干2500g高膳食纤维零食代餐小吃
Loading...
OpenClaw

OpenClaw 龙虾

AI AGENT GATEWAY
在您的服务器部署 OpenClaw,打造专属极速 AI 助手。
零门槛一键部署环境
支持 QQ/飞书/微信 渠道
跨平台指令分发执行
立即安装