Python中PyAutoGUI 库的使用

 更新时间:2025年04月25日 11:20:29   作者:wanglaqqqq  
PyAutoGUI 是 Python 生态中 ​功能最全面的图形界面自动化库,通过模拟鼠标、键盘操作和屏幕图像识别,本文就来介绍一下Python中PyAutoGUI库的使用,感兴趣的可以了解一下

一、PyAutoGUI 库简介

PyAutoGUI 是 Python 生态中 ​功能最全面的图形界面自动化库,通过模拟鼠标、键盘操作和屏幕图像识别,实现跨平台(Windows/macOS/Linux)的自动化任务。其核心价值在于:

  • ​解放重复劳动:自动化数据录入、文件整理、报表生成等耗时操作,效率提升 90% 以上。
  • ​精准控制能力:支持像素级坐标定位(误差 ±0.5 像素)、亚秒级操作延迟(可配置 0.01 秒精度)。
  • ​智能图像识别:通过截图匹配动态定位界面元素(如按钮、文本框),解决因窗口位置变化导致的脚本失效问题。
  • ​安全可靠:内置防误触机制(如失效安全点)、操作日志记录和多线程安全锁,保障自动化流程的稳定性。

二、安装与环境配置

​安装命令:

pip install pyautogui  # 核心库
pip install Pillow     # 图像处理依赖(截图功能必需)

​验证安装:

import pyautogui
print(pyautogui.__version__)  # 输出版本号(如 0.9.54)

​全局安全配置​(防止脚本失控):

pyautogui.FAILSAFE = True     # 鼠标移至左上角时自动终止程序[2](@ref)
pyautogui.PAUSE = 0.5         # 每次操作后暂停 0.5 秒[2](@ref)

三、核心功能与常用函数

​1. 鼠标控制

函数/方法功能描述参数说明
pyautogui.moveTo(x, y, duration)移动鼠标到绝对坐标 (x, y)duration:移动耗时(秒),设为 0 则瞬间完成
pyautogui.moveRel(dx, dy, duration)相对当前位置偏移 (dx, dy)常用于动态调整位置(如拖拽文件)
pyautogui.click(x, y, clicks, button)点击操作(左键/右键/双击)button'left'(默认)、'right''middle'
pyautogui.dragTo(x, y, duration)拖拽到目标位置需先按住鼠标,常用于文件拖放或绘图软件操作
pyautogui.scroll(units)滚动鼠标滚轮units:正数向上滚动,负数向下

示例:自动化文件拖放

pyautogui.moveTo(100, 200, duration=1)  # 移动至文件位置
pyautogui.dragTo(500, 300, duration=2)  # 拖拽至目标文件夹

 2. 键盘操作

函数/方法功能描述参数说明
pyautogui.write(text, interval)模拟键盘输入文本interval:字符输入间隔时间(秒)
pyautogui.press(keys)按下并释放单个按键(如 'enter''tab'支持 200+ 种按键(见 pyautogui.KEYBOARD_KEYS
pyautogui.hotkey(*keys)组合快捷键(如 'ctrl+c'自动处理按键顺序(按下 ctrl → 按下 c → 释放 c → 释放 ctrl
pyautogui.keyDown(key) / keyUp(key)分别处理按键的按下和释放用于长按操作(如游戏角色移动)

示例:自动填写表单

pyautogui.write('张三', interval=0.1)  # 输入姓名
pyautogui.press('tab')                # 切换至下一输入框
pyautogui.write('13812345678')        # 输入手机号
pyautogui.hotkey('ctrl', 's')         # 保存表单[6](@ref)

3. 屏幕与图像识别

函数/方法功能描述参数说明
pyautogui.screenshot(region)截取屏幕区域图像region:指定区域 (x, y, width, height),默认全屏
pyautogui.locateOnScreen(image, confidence)在屏幕上匹配目标图像位置confidence:匹配精度(0~1),推荐 0.8 以上
pyautogui.locateCenterOnScreen(image)返回匹配图像的中心坐标常用于点击动态位置的按钮
pyautogui.pixel(x, y)获取指定像素点的 RGB 颜色值用于判断界面状态(如按钮是否高亮)

示例:智能点击动态按钮

button_pos = pyautogui.locateOnScreen('submit_button.png', confidence=0.9)
if button_pos:
    x, y = pyautogui.center(button_pos)
    pyautogui.click(x, y)  # 点击按钮中心[1,4](@ref)
else:
    raise Exception("未找到提交按钮")

4. 窗口管理与高级控制

函数/方法功能描述参数说明
pyautogui.getWindowsWithTitle(title)获取指定标题的窗口对象需配合 pygetwindow 库使用
pyautogui.alert(text)弹出确认对话框阻塞程序直至用户点击
pyautogui.size()返回屏幕分辨率 (width, height)用于计算相对坐标

示例:多窗口协同操作

# 激活记事本窗口并输入内容
notepad = pyautogui.getWindowsWithTitle('记事本')[0]
notepad.activate()
pyautogui.write('自动录入文本', interval=0.1)

四、应用场景与实战案例

  • ​自动化办公

    • ​Excel 报表生成:通过热键操作自动打开文件、填充数据并保存,耗时从 2 小时缩短至 2 分钟。
    • ​邮件批量发送:自动填写收件人、主题和附件,结合 Outlook 实现无人值守处理。
  • ​数据采集与测试

    • ​动态网页截图:定时截取网页数据并保存,用于监控价格或库存变化。
    • ​UI 自动化测试:验证软件界面响应,替代人工点击操作。
  • ​游戏与娱乐

    • ​自动连招脚本:在游戏中模拟按键序列实现连续技能释放。
    • ​视频自动播放:通过图像识别跳过广告,自动切换剧集。

​五、注意事项与优化技巧

  • ​兼容性优化

    • 不同操作系统的坐标系统可能差异(如 macOS 的菜单栏高度),需动态计算偏移量。
    • 高分辨率屏幕需调整图像识别参数(如 confidence=0.95)。
  • ​性能提升

    • 使用 pyautogui.locateAllOnScreen() 批量识别多个目标,减少截图次数。
    • 启用多线程时需加锁(with pyautogui.lock()),防止操作冲突。
  • ​异常处理

    • 捕获 pyautogui.ImageNotFoundException 以处理图像识别失败。
    • 记录操作日志(pyautogui.logScreenshot())便于调试。

到此这篇关于Python中PyAutoGUI 库的使用的文章就介绍到这了,更多相关Python PyAutoGUI 库内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python实现学生管理系统的代码(JSON模块)

    Python实现学生管理系统的代码(JSON模块)

    这篇文章主要介绍了Python实现学生管理系统的代码(JSON模块),本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • TorchVision Transforms API目标检测实例语义分割视频类

    TorchVision Transforms API目标检测实例语义分割视频类

    这篇文章主要为大家介绍了TorchVision Transforms API大升级,支持目标检测、实例/语义分割及视频类任务示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • Python神奇的内置函数locals的实例讲解

    Python神奇的内置函数locals的实例讲解

    今天小编就为大家分享一篇关于Python神奇的内置函数locals的实例讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-02-02
  • python numpy查询定位赋值数值所在行列

    python numpy查询定位赋值数值所在行列

    这篇文章主要介绍了python numpy查询定位赋值数值所在行列,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-09-09
  • 使用python opencv对畸变图像进行矫正的实现

    使用python opencv对畸变图像进行矫正的实现

    本文主要介绍了使用python opencv对畸变图像进行矫正的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • Python中rasterio库的实现

    Python中rasterio库的实现

    Rasterio是一个用于读写光栅数据的Python库,它专注于快速和可靠地处理大规模地理空间栅格数据,本文主要介绍了Python中rasterio库的实现,感兴趣的可以了解一下
    2025-04-04
  • 基于Python的图像阈值化分割(迭代法)

    基于Python的图像阈值化分割(迭代法)

    这篇文章主要介绍了基于Python的图像阈值化分割(迭代法),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • Python文本的艺术字符串处理技巧掌握

    Python文本的艺术字符串处理技巧掌握

    这篇文章主要为大家介绍了Python文本的艺术字符串处理技巧掌握,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • Python中的异常处理学习笔记

    Python中的异常处理学习笔记

    这篇文章主要介绍了Python中的异常处理学习笔记,本文讲解了常见的异常类、自定义异常类、捕获异常、抛出异常、上下文管理器等内容,需要的朋友可以参考下
    2015-01-01
  • 基于python实现把图片转换成素描

    基于python实现把图片转换成素描

    这篇文章主要介绍了基于python实现把图片转换成素描,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11

最新评论