跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI算法

PyAutoGUI Python 桌面自动化框架实战指南

PyAutoGUI 是跨平台 Python 桌面自动化库,支持模拟鼠标键盘操作及屏幕图像识别。通过 pip 安装后,可调用 moveTo、click、typewrite 等方法实现桌面自动化。文章涵盖坐标系统、图像定位 locateOnScreen、故障安全机制及实际脚本示例,帮助开发者快速构建重复性任务自动化工具。

FrontendX发布于 2026/3/23更新于 2026/10/2592 浏览

PyAutoGUI 核心介绍

PyAutoGUI 是一款跨平台(支持 Windows、macOS、Linux)的 Python 桌面自动化库,能够模拟用户的鼠标移动、点击、滚轮操作和键盘输入,还支持屏幕截图、图像识别定位等功能。它广泛用于重复性桌面操作自动化,比如表单填写、软件操作或批量处理任务。

安装步骤

直接通过 pip 命令安装即可,依赖关系简单:

pip install pyautogui

补充一下,如果安装失败(例如 macOS 可能需要额外依赖),可以参考官方文档适配系统环境。Windows 系统通常可以直接安装成功。

核心功能详解

自动获取当前鼠标位置

先看看如何实时获取鼠标坐标,这有助于调试脚本:

import pyautogui
import time

try:
    while True:
        x, y = pyautogui.position()  # 获得鼠标所在位置
        print(x, y)                  # 打印当前鼠标所处位置
        time.sleep(1)
except KeyboardInterrupt:
    print('\nExit.')

鼠标操作:模拟用户鼠标行为

PyAutoGUI 提供了完整的鼠标模拟接口,核心包括移动、点击、拖拽等。所有操作均基于屏幕坐标系统(屏幕左上角为原点 (0, 0),向右为 x 轴正方向,向下为 y 轴正方向)。

鼠标移动
  • 基础移动:将鼠标从当前位置移动到指定坐标 (x, y)
import pyautogui
# duration:移动耗时(秒),可选参数,默认瞬间移动
pyautogui.moveTo(x=100, y=200, duration=0.5)
  • 相对移动:基于当前鼠标位置,偏移指定像素(dx 为 x 轴偏移,dy 为 y 轴偏移)
# 向右移动 50 像素,向下移动 30 像素,耗时 0.3 秒
pyautogui.moveRel(dx=50, dy=30, duration=0.3)
鼠标点击
  • 基础点击:在指定坐标执行鼠标左键单击
# 在 (100, 200) 位置单击左键,duration 为移动到目标位置的耗时
pyautogui.click(x=100, y=200, duration=)
0.2
  • 指定按键点击:支持左键(left)、右键(right)、中键(middle)
# 右键单击
pyautogui.click(x=100, y=200, button='right', duration=0.2)
# 中键单击
pyautogui.click(x=100, y=200, button='middle', duration=0.2)
  • 双击/三击:快速执行多次点击
# 左键双击
pyautogui.doubleClick(x=100, y=200, duration=0.2)
# 左键三击
pyautogui.tripleClick(x=100, y=200, duration=0.2)
鼠标拖拽

模拟鼠标按住并拖动的行为,常用于文件拖拽、窗口调整等场景:

# 从 (x1, y1) 拖拽到 (x2, y2),按住左键拖拽
pyautogui.dragTo(x=300, y=400, duration=0.8, button='left')
# 相对拖拽:基于当前位置偏移拖拽
pyautogui.dragRel(dx=100, dy=50, duration=0.5, button='left')
鼠标滚轮

模拟滚轮滚动行为,clicks 参数指定滚动幅度(正数向上滚,负数向下滚):

# 向下滚动 5 格(负数表示向下)
pyautogui.scroll(clicks=-5, x=100, y=200)
# 向上滚动 3 格(正数表示向上)
pyautogui.scroll(clicks=3, x=100, y=200)

键盘操作:模拟输入与快捷键

普通文本输入

使用 typewrite() 方法输入字符串,支持指定输入间隔(模拟人工输入速度):

# 直接输入文本
pyautogui.typewrite("Hello, PyAutoGUI!")
# 带间隔输入(每个字符间隔 0.2 秒)
pyautogui.typewrite("Hello, PyAutoGUI!", interval=0.2)
特殊按键输入

对于回车键、空格键、快捷键等特殊按键,需使用按键名称(封装在 PyAutoGUI 中)。核心方法包括 press()(单次按下并释放)、keyDown()(按住不释放)和 keyUp()(释放按住的按键)。

# 单个特殊按键:按下并释放回车键
pyautogui.press('enter')

# 组合快捷键:Ctrl + C(复制)
pyautogui.keyDown('ctrl')
pyautogui.press('c')
pyautogui.keyUp('ctrl')

# 简化组合快捷键:使用 hotkey() 方法(推荐)
pyautogui.hotkey('ctrl', 'c')  # 复制
pyautogui.hotkey('ctrl', 'v')  # 粘贴
pyautogui.hotkey('ctrl', 'a')  # 全选

常用特殊按键名称包括:enter(回车)、space(空格)、backspace(删除)、tab(制表符)、shift、ctrl、alt 等。

屏幕与图像识别:定位目标元素

屏幕基础信息获取

获取屏幕分辨率(用于确定坐标范围):

# 获取屏幕宽度和高度
screen_width, screen_height = pyautogui.size()
print(f"屏幕分辨率:{screen_width} × {screen_height}")

# 获取当前鼠标位置坐标
mouse_x, mouse_y = pyautogui.position()
print(f"当前鼠标位置:({mouse_x}, {mouse_y})")
图像定位:查找屏幕上的目标图像

PyAutoGUI 支持通过目标图像(如按钮截图、图标截图),自动查找其在屏幕上的坐标,核心方法是 locateOnScreen()。

操作步骤:

  1. 先截取目标元素的截图(保存为 PNG 格式,推荐使用截图工具精准截取)
  2. 使用 locateOnScreen() 查找图像位置,返回目标区域的坐标和尺寸
  3. 通过 center() 方法获取目标区域的中心坐标(便于点击等操作)
import pyautogui
import time

# 等待 3 秒,预留时间切换到目标屏幕
time.sleep(3)

try:
    # 查找目标图像(image.png 为目标截图路径)
    # confidence:匹配精度(0-1,默认 1,降低精度可提高查找成功率,需安装 opencv-python 支持)
    target_location = pyautogui.locateOnScreen('image.png', confidence=0.8)
    
    if target_location:
        # 获取目标图像的中心坐标
        target_center = pyautogui.center(target_location)
        print(f"目标图像位置:{target_location},中心坐标:{target_center}")
        # 点击目标中心
        pyautogui.click(target_center.x, target_center.y, duration=0.2)
    else:
        print("未找到目标图像")
except Exception as e:
    print(f"查找失败:{e}")

注意:使用 confidence 参数时,需额外安装 opencv-python:pip install opencv-python

屏幕截图
# 截取整个屏幕并保存为文件
pyautogui.screenshot('full_screen.png')

# 截取指定区域屏幕(x1, y1, 宽度,高度)
pyautogui.screenshot('partial_screen.png', region=(100, 100, 300, 200))

安全机制:防止自动化失控

PyAutoGUI 提供了关键的安全保护机制,避免自动化操作失控(如鼠标移到屏幕边缘无法找回、无限循环操作等)。

故障安全触发

默认开启:当鼠标移动到屏幕左上角(坐标 (0, 0))时,会立即抛出 FailSafeException 异常,终止所有自动化操作:

# 若操作失控,快速将鼠标移到屏幕左上角即可停止程序
try:
    while True:
        pyautogui.moveRel(10, 0, duration=0.1)
except pyautogui.FailSafeException:
    print("故障安全机制触发,程序终止")
操作延迟

通过 PAUSE 属性设置所有 PyAutoGUI 操作的默认间隔时间(秒),便于观察操作过程,也可防止操作过快导致程序异常:

# 设置所有操作间隔 0.5 秒
pyautogui.PAUSE = 0.5

实战示例:简单自动化操作

下面是一个完整的脚本示例,演示了打开记事本并输入文本的过程:

import pyautogui
import time

# 安全设置
pyautogui.PAUSE = 0.5  # 操作间隔 0.5 秒
pyautogui.FAILSAFE = True  # 开启故障安全机制

# 1. 等待 5 秒,预留时间打开记事本
print("5 秒后开始操作,请打开记事本...")
time.sleep(5)

# 2. 输入文本
pyautogui.typewrite("Python 自动化 - PyAutoGUI 实战", interval=0.1)

# 3. 换行
pyautogui.press('enter')

# 4. 输入第二行文本
pyautogui.typewrite("这是一个简单的自动化演示", interval=0.1)

# 5. 全选文本(Ctrl + A)
pyautogui.hotkey('ctrl', 'a')

# 6. 复制文本(Ctrl + C)
pyautogui.hotkey('ctrl', 'c')

# 7. 弹窗提示操作完成
pyautogui.alert("自动化操作完成!")

目录

  1. PyAutoGUI 核心介绍
  2. 安装步骤
  3. 核心功能详解
  4. 自动获取当前鼠标位置
  5. 鼠标操作:模拟用户鼠标行为
  6. 鼠标移动
  7. duration:移动耗时(秒),可选参数,默认瞬间移动
  8. 向右移动 50 像素,向下移动 30 像素,耗时 0.3 秒
  9. 鼠标点击
  10. 在 (100, 200) 位置单击左键,duration 为移动到目标位置的耗时
  11. 右键单击
  12. 中键单击
  13. 左键双击
  14. 左键三击
  15. 鼠标拖拽
  16. 从 (x1, y1) 拖拽到 (x2, y2),按住左键拖拽
  17. 相对拖拽:基于当前位置偏移拖拽
  18. 鼠标滚轮
  19. 向下滚动 5 格(负数表示向下)
  20. 向上滚动 3 格(正数表示向上)
  21. 键盘操作:模拟输入与快捷键
  22. 普通文本输入
  23. 直接输入文本
  24. 带间隔输入(每个字符间隔 0.2 秒)
  25. 特殊按键输入
  26. 单个特殊按键:按下并释放回车键
  27. 组合快捷键:Ctrl + C(复制)
  28. 简化组合快捷键:使用 hotkey() 方法(推荐)
  29. 屏幕与图像识别:定位目标元素
  30. 屏幕基础信息获取
  31. 获取屏幕宽度和高度
  32. 获取当前鼠标位置坐标
  33. 图像定位:查找屏幕上的目标图像
  34. 等待 3 秒,预留时间切换到目标屏幕
  35. 屏幕截图
  36. 截取整个屏幕并保存为文件
  37. 截取指定区域屏幕(x1, y1, 宽度,高度)
  38. 安全机制:防止自动化失控
  39. 故障安全触发
  40. 若操作失控,快速将鼠标移到屏幕左上角即可停止程序
  41. 操作延迟
  42. 设置所有操作间隔 0.5 秒
  43. 实战示例:简单自动化操作
  44. 安全设置
  45. 1. 等待 5 秒,预留时间打开记事本
  46. 2. 输入文本
  47. 3. 换行
  48. 4. 输入第二行文本
  49. 5. 全选文本(Ctrl + A)
  50. 6. 复制文本(Ctrl + C)
  51. 7. 弹窗提示操作完成

更多推荐文章

查看全部
  • Spring Boot 药品进销存管理系统:前后端分离架构与核心功能解析
  • AI 如何革新 PCB 设计:PADS 软件智能辅助功能解析
  • Cesium 无人机智能航线规划:航点动作组与 AI 识别
  • 2026 年 AI 测试用例生成工具 TOP5 深度解析
  • 2026 Python 展望:AI 时代的核心基础设施语言
  • Python 十大优雅写法指南:提升代码可读性与效率
  • Pixel Fashion Atelier 部署教程:Stable Diffusion 像素时装生成
  • CSS3 十六进制透明度用法详解与实战技巧
  • 金仓数据库 ksql 指南:创建与管理用户和权限 (KingbaseES 安全控制核心)
  • Stable Diffusion WebUI Forge AI 绘画风格转换指南
  • AI 提示词工程:核心原理、设计策略与实战指南
  • 基于 Playwright 封装反爬爬虫:隐藏自动化特征实战
  • STM32 无线烧录方法:WCH LinkW 与 ESP32-C3 方案
  • Stable Diffusion 制作瞬息全宇宙风格视频动画
  • Python 小红书数据采集工具实现指南
  • Transformer 算法核心架构与原理详解
  • C++ 指针与引用核心面试题详解
  • CentOS 系统定时执行 Python 邮件发送的五种方案
  • Cline 集成 DeepSeek:开源 AI 编程助手助力终端与 Web 开发
  • Spring Boot 日志全方位指南:从入门到高级配置

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online