Python使用PyAutoGUI实现桌面自动化功能

 更新时间:2025年07月22日 10:59:41   作者:带娃的IT创业者  
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. 自动化脚本的法律边界与安全实践

以上就是Python使用PyAutoGUI实现桌面自动化功能的详细内容,更多关于Python PyAutoGUI桌面自动化的资料请关注脚本之家其它相关文章!

相关文章

  • 基于python实现PDF分页和管理工具开发详解

    基于python实现PDF分页和管理工具开发详解

    本文将详细分析一个使用wxPython开发的PDF分离和管理工具,该工具能够将PDF文件按页分离,提供预览功能,并支持别名管理系统,感兴趣的小伙伴可以了解下
    2025-09-09
  • Python Pyinstaller库安装步骤以及使用方法

    Python Pyinstaller库安装步骤以及使用方法

    pyinstaller是一个非常简单的打包python的py文件的库,下面这篇文章主要给大家介绍了关于Python Pyinstaller库安装步骤以及使用方法的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2022-08-08
  • Python实现自动化网页操作步骤

    Python实现自动化网页操作步骤

    这篇文章主要介绍Python如何实现自动化网页操作,文中有详细的流程步骤和代码示例,对我们的学习或工作有一定的帮助,需要的朋友可以参考下
    2023-06-06
  • 教你用python实现一个加密的文字处理器

    教你用python实现一个加密的文字处理器

    生活中有时候我们需要对一些重要的文件进行加密,下面这篇文章主要给大家介绍了关于如何用python实现一个加密文字处理器的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-06-06
  • SpringMVC和SpringBoot接收参数的几种方式详解

    SpringMVC和SpringBoot接收参数的几种方式详解

    这篇文章主要介绍了SpringMVC和SpringBoot接收参数的几种方式详解,Spring是分层的JavaSE/EE应用轻量级开源框架,以IoC和AOP为内核,提供了展现层 Spring MVC和持久层Spring JDBC以及业务层事务管理等众多的企业级应用技术,需要的朋友可以参考下
    2023-07-07
  • Flask框架踩坑之ajax跨域请求实现

    Flask框架踩坑之ajax跨域请求实现

    这篇文章主要介绍了Flask框架踩坑之ajax跨域请求实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-02-02
  • Python对列表进行排序的五种方法示例代码

    Python对列表进行排序的五种方法示例代码

    这篇文章主要给大家介绍了关于Python对列表进行排序的五种方法,分别是sort()、sorted()、lambda表达式、reverse()和自定义排序算法,这些方法各有特点,文中给出了详细的代码示例,需要的朋友可以参考下
    2025-05-05
  • Python基础实战总结

    Python基础实战总结

    今天要给大家介绍的是Python基础实战,本文主要以举例说明讲解:问题的关键点就是在于构造姓名,学号和成绩,之后以字典的形式进行写入文件。这里准备两个列表,一个姓,一个名,之后使用random库进行随机字符串拼接,得到姓名,需要的朋友可以参考一下
    2021-10-10
  • Python numpy二维数组如何删除指定行和列

    Python numpy二维数组如何删除指定行和列

    本文展示了如何对数组进行行列删除操作,包括删除单行、单列、多行和多列的方法,通过具体的运行结果展示,读者可以清晰地了解到如何在不同情况下进行数据处理,文章内容实用,适合需要进行数据处理的读者参考学习
    2024-09-09
  • 简单的Python动态可视化神器,编程小白也能上手

    简单的Python动态可视化神器,编程小白也能上手

    这篇文章就来介绍简单的Python动态可视化神器,最近发现了一个宝藏动态可视化库,非常简单,即使是小白也能轻松上手。这个库就是motionchart,它能够用 pandas 的 dataframe 数据直接创建交互式的动态图表,下面来简单看一下如何使用。

    2021-10-10

最新评论