《Python实战进阶》No24: PyAutoGUI 实现桌面自动化

news2025/3/16 15:44:04

No24: PyAutoGUI 实现桌面自动化


摘要

PyAutoGUI 是一个跨平台的桌面自动化工具,能够模拟鼠标点击、键盘输入、屏幕截图与图像识别,适用于重复性桌面任务(如表单填写、游戏操作、批量文件处理)。本集通过代码+截图+输出日志的实战形式,带你掌握从基础操作到复杂任务的全流程自动化。


在这里插入图片描述

核心概念与代码实战

1. 基础操作:鼠标与键盘控制

安装命令

pip install pyautogui  

鼠标控制

import pyautogui  
import time  

# 移动鼠标到坐标 (500, 300)  
pyautogui.moveTo(500, 300, duration=1)  

# 模拟点击(左键单击)  
pyautogui.click()  

# 滚轮滚动(向上滚动 200 单位)  
pyautogui.scroll(200)  

键盘输入

# 输入文本  
pyautogui.write("Hello, PyAutoGUI!", interval=0.1)  

# 组合键操作(Ctrl+C)  
pyautogui.hotkey("ctrl", "c")  

效果验证

print(f"当前鼠标位置:{pyautogui.position()}")  # 输出实时坐标  

2. 截屏与图像识别

场景:通过屏幕上的图标定位并点击按钮。

# 截取屏幕并保存  
screenshot = pyautogui.screenshot()  
screenshot.save("screenshot.png")  

# 查找图标位置(需提前保存图标图片)  
button_location = pyautogui.locateOnScreen("submit_button.png")  
if button_location:  
    # 计算图标中心点并点击  
    button_center = pyautogui.center(button_location)  
    pyautogui.click(button_center)  
else:  
    print("图标未找到!")  

输出示例

图标位置:Box(left=200, top=150, width=50, height=30)  

3. 脚本调试与异常处理

问题场景:图像识别失败导致脚本崩溃。
解决方案

try:  
    # 设置超时时间为 5 秒  
    button_location = pyautogui.locateOnScreen(  
        "save_icon.png",  
        confidence=0.8,  # 允许 80% 相似度  
        grayscale=True   # 灰度匹配提升速度  
    )  
    if not button_location:  
        raise Exception("图标匹配失败!")  
except Exception as e:  
    print(f"错误:{e}")  
    # 回退到手动输入坐标  
    pyautogui.click(100, 200)  

调试技巧

  • 使用 pyautogui.PAUSE = 1 控制操作间隔
  • 启用 pyautogui.FAILSAFE = True(鼠标移至左上角强制停止脚本)

实战案例

案例 1:自动化填写表单

场景:批量填写 Excel 表格中的数据到某个桌面应用。

import pyautogui  
import pandas as pd  

# 读取 Excel 数据  
data = pd.read_excel("data.xlsx")  

for index, row in data.iterrows():  
    # 定位输入框并填写  
    pyautogui.click(300, 400)  # 姓名输入框  
    pyautogui.write(row["姓名"])  
    pyautogui.press("tab")      # 跳转到年龄输入框  
    pyautogui.write(str(row["年龄"]))  
    # 提交表单  
    pyautogui.press("enter")  
    time.sleep(1)  # 等待页面刷新  

输出示例

已提交姓名:张三,年龄:25  
已提交姓名:李四,年龄:30  
案例 2:模拟游戏中的简单操作

场景:自动玩“键盘反应速度”游戏。

# 监听屏幕特定区域的变化  
game_region = (400, 200, 200, 100)  

while True:  
    # 截取游戏区域  
    region_screenshot = pyautogui.screenshot(region=game_region)  
    # 检测红色方块出现  
    if pyautogui.pixelMatchesColor(500, 250, (255, 0, 0)):  
        pyautogui.press("space")  # 按空格键得分  
案例 3:批量重命名文件

场景:将文件夹中的 100 张图片按规则重命名。

import os  
import pyautogui  

# 打开文件资源管理器  
os.system("explorer.exe .\\images")  
time.sleep(2)  

# 依次重命名文件  
for i in range(1, 101):  
    pyautogui.hotkey("ctrl", "a")    # 全选文件  
    pyautogui.press("f2")            # 重命名  
    pyautogui.write(f"photo_{i:03d}")  # 格式化名称(photo_001)  
    pyautogui.press("enter")  
    time.sleep(0.5)  

扩展思考

1. PyAutoGUI 与其他工具的结合
  • 与 Selenium 结合
    # 用 Selenium 处理网页,PyAutoGUI 处理下载弹窗  
    driver.get("https://example.com/download")  
    pyautogui.press("enter")  # 自动确认下载对话框  
    
  • 打包为可执行文件
    pip install pyinstaller  
    pyinstaller --onefile your_script.py  
    
2. 安全性和法律合规性
  • 风险提示
    • 避免自动化操作金融交易、社交账号等敏感场景
    • 部分软件(如游戏)可能禁止自动化脚本
  • 合规建议
    • 仅用于个人效率提升或授权场景
    • 遵守《计算机软件保护条例》和平台规则

总结

通过本实战,你已掌握:

  1. PyAutoGUI 的核心操作(鼠标、键盘、图像识别)
  2. 复杂任务的异常处理与调试技巧
  3. 从表单填写到游戏模拟的完整案例
  4. 自动化脚本的法律边界与安全实践

下集预告
《No25: Python 并发编程:从多线程到异步 IO》将带你突破单线程性能瓶颈,实现高并发任务处理!


附:运行环境

  • 环境要求:Python 3.7+、Windows/macOS/Linux

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2316126.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

功耗电流和耗电量的获取

1. 实验室环境: 在受控的实验条件下,我们使用 PowerMonitor 精确控制变量(如固定设备型号和系统版本、清理后台应用、设置恒定的亮度与音量、确保稳定的网络连接等),以获取高精度的电流测量数据,从而准确评…

医疗送药机器人“空间拓扑优化+动态算法决策+多级容错控制”三重链式编程技术解析与应用

一、引言 1.1 研究背景与意义 在医疗体系中,高效精准的药品配送是保障医疗服务质量和患者安全的关键环节。随着医疗技术的不断进步和医疗需求的日益增长,传统的人工送药方式逐渐暴露出诸多弊端,如配送效率低下、易受人为因素干扰导致错误率上升、人力成本高昂等。特别是在…

[CISCN 2022 初赛]ezpop(没成功复现)

打开在线环境可以看到&#xff1a; 记得之前做过一个类似的就是有点像照着漏洞去复现。应该可以直接在网上找到链子去打。 www.zip查看路由是 Index/test&#xff0c;然后 post 传参 a&#xff1a; exp&#xff08;参考了别的大神的wp&#xff09;&#xff1a; <?php //…

QT编程之QGIS

一、QGIS介绍 Quantum GIS&#xff08;QGIS&#xff09;是开源地理信息系统桌面软件&#xff0c;使用GNU&#xff08;General Public License&#xff09;授权&#xff0c; 属于 Open Source eospatial Foundation&#xff08; OSGeo &#xff09;的官方计划。在 GNU 授权下&am…

嵌入式C语言中堆栈管理与数据存储的精髓

在嵌入式开发中,理解C语言的内存管理和数据存储机制是至关重要的。本文将从堆栈管理和数据存储两个方面,深入探讨C语言在嵌入式Linux开发中的应用。 一、堆栈管理 1.1 栈的初始化与作用 栈是C语言运行的基础,主要用于存储函数参数、局部变量、函数返回值和编译器生成的临时…

LSTM方法实践——基于LSTM的汽车销量时序建模与预测分析

Hi&#xff0c;大家好&#xff0c;我是半亩花海。本实验基于汽车销量时序数据&#xff0c;使用LSTM网络&#xff08;长短期记忆网络&#xff09;构建时间序列预测模型。通过数据预处理、模型训练与评估等完整流程&#xff0c;验证LSTM在短期时序预测中的有效性。 目录 一、实验…

[Windows] 轻量级景好鼠标录制器 v2.1 单文件版,支持轨迹+鼠标键盘录制复刻

[Windows] 轻量级景好鼠标录制器 链接&#xff1a;https://pan.xunlei.com/s/VOLHz0rPyqdhV4bgyTYuW6W7A1?pwd98uj# 软件特性&#xff1a; 高效播放控制&#xff1a;动作间隔优化至100 ms&#xff0c;进度条可视化&#xff0c;支持随机循环/多次播放。 深度自定义&#xff1…

LINUX --- KVM

什么是 KVM&#xff1f;– 基于内核的虚拟机简介 – AWS (amazon.com) 什么是 KVM&#xff1f; 基于内核的虚拟机&#xff08;KVM&#xff09;是一种软件功能&#xff0c;您可以将其安装在物理 Linux 机器上以创建虚拟机。虚拟机是一种软件应用程序&#xff0c;可作为另一台实…

LabVIEW VI Scripting实现连接器窗格自动化

通过VI Scripting自动化配置连接器窗格&#xff0c;可大幅提升开发效率、统一接口规范&#xff0c;并适配动态需求。以下为真实场景中的典型应用案例&#xff0c;涵盖工业、汽车电子及教育领域&#xff0c;展示其实际价值与实施效果。 特点&#xff1a; 程序化配置&#xff1a;…

网络安全信息收集[web子目录]:dirsearch子目录爆破全攻略以及爆破字典结合

目录 一、dirsearch 工具详细使用攻略 1. 安装 前提条件 安装步骤 可选&#xff1a;直接下载预编译版本 2. 基本用法 命令格式 参数说明 示例 3. 核心功能与高级用法 3.1 多线程加速 3.2 自定义字典 3.3 递归扫描 3.4 过滤响应 3.5 添加请求头 3.6 代理支持 3…

pandas表格内容比较

前阵子来了一个211大学实习生&#xff08;小男生&#xff09;&#xff0c;要比较2个版本字段的变化&#xff0c;辅助完成系统升级字段替换&#xff0c;要求找出哪些字段是新增的&#xff0c;哪些字段是删除的&#xff0c;哪些字段是属性信息修改的&#xff0c;要求半天时间搞定…

TMS320F28P550SJ9学习笔记13: 软件I2C_驱动AT24Cxx存储芯片

今日尝试配置软件I2C通信&#xff0c;我的目标通信芯片是AT24C64&#xff0c;相较于AT24C02这样的8位寻址&#xff0c;它是16位寻址的&#xff0c;所以有些不同 文章提供测试代码讲解、完整工程下载、测试效果图 目录 软件I2C引脚初始化&#xff1a; C内联函数改变SCL与SDA的输…

手抖预防方法主要包括以下几个方面

手抖预防方法主要包括以下几个方面&#xff1a; 1. 心理调节&#xff1a;保持心情舒畅&#xff0c;避免过度紧张和焦虑。如有必要&#xff0c;可以寻求心理医生帮助进行心理调适。 2. 充分休息&#xff1a;保证充足的睡眠时间&#xff0c;避免熬夜和过度劳累。合理安排工作和…

SpringBoot MCP 入门使用

随着AI的火爆&#xff0c;最近发现MCP在未来确实大有可为&#xff0c;作为一名javaer怎么可以落后在历史洪流呢&#xff0c;根据官网和cursor也从零开始体验一下自定义mcp server。以后可以根据自己业务场景做出各种适合自身业务的工具。 至于什么是MCP 可以到https://modelcon…

Windows 11 安装Docker Desktop环境

1、确认CPU开启虚拟化 打开任务管理器&#xff0c;切换到“性能”选项卡&#xff0c;查看 CPU 信息。若“虚拟化”状态显示为“已启用”&#xff0c;则表示虚拟化已开启&#xff1b;若显示为“已禁用”&#xff0c;则需要在启动时进入 BIOS 开启虚拟化设置&#xff08;若显示已…

汽车保养记录用什么软件记录,汽车维修记录查询系统,佳易王汽车保养维护服务记录查询管理系统操作教程

一、概述 本实例以佳易王汽车保养维护服务记录查询管理系统为例说明&#xff0c;其他版本可参考本实例。试用版软件资源可到文章最后了解&#xff0c;下载的文件为压缩包文件&#xff0c;请使用免费版的解压工具解压即可试用。 软件特点&#xff1a;1、功能实用&#xff0c;操…

深入理解C/C++堆数据结构:从原理到实战

一、堆的本质与特性 1.1 什么是堆数据结构&#xff1f; 堆&#xff08;Heap&#xff09;是一种特殊的完全二叉树&#xff0c;它满足以下核心性质&#xff1a; 堆序性&#xff1a;每个节点的值都满足特定顺序关系 结构性&#xff1a;完全二叉树的结构特性&#xff08;除最后一…

【MATLAB实战】实现白鲸算法(BWO)优化BP神经网络:提升模型性能的新思路

一、什么是白鲸优化算法&#xff08;BWO&#xff09;&#xff1f; 白鲸优化算法是受自然界中白鲸群体行为和觅食策略启发的一种新型智能优化算法。白鲸在捕食过程中展现出高效的协作能力和适应性&#xff0c;例如通过“回声定位”搜索猎物位置群体间信息共享&#xff0c;这些行…

医疗资源联动,广州长泰医院与海南德雅医院共筑地贫防治新篇章

​ 为贯彻落实"健康中国"战略关于出生缺陷综合防治的部署要求&#xff0c;推动地中海贫血防治体系建设。2025年3月15日&#xff0c;广州长泰医院与海南德雅医院联合主办的“地中海贫血生殖遗传干预大型义诊暨合作签约仪式”在广州正式启动&#xff0c;活动以“爱与希…

DeepSeek在医学领域的应用

DeepSeek作为高性能AI大模型&#xff0c;在医学领域的应用场景广泛&#xff0c;结合其在数据处理、自然语言理解和深度学习方面的优势&#xff0c;显著推动了医疗行业的智能化转型。以下是其核心应用场景及具体案例&#xff1a; 1. 辅助诊断与决策支持 临床辅助诊断&#xff1…