Python 自动化库 PyAutoGUI 使用指南
一、PyAutoGUI 简介
PyAutoGUI 是一个跨平台的 Python GUI 自动化模块,能够模拟用户在屏幕上的鼠标和键盘操作。它支持 Windows、macOS 和 Linux 系统,广泛用于 GUI 测试、自动化数据输入、脚本控制应用程序等场景。
本文详细介绍了 Python 自动化库 PyAutoGUI 的核心功能与实战应用。内容涵盖安装配置、鼠标键盘模拟、屏幕截图与图像识别技术、安全保护措施及剪贴板集成方法。通过具体的微信消息发送案例,展示了如何利用图像定位实现跨应用自动化操作。文章还补充了常见问题解答与最佳实践建议,帮助开发者规避分辨率适配、权限限制等潜在风险,构建稳定可靠的自动化脚本。

PyAutoGUI 是一个跨平台的 Python GUI 自动化模块,能够模拟用户在屏幕上的鼠标和键盘操作。它支持 Windows、macOS 和 Linux 系统,广泛用于 GUI 测试、自动化数据输入、脚本控制应用程序等场景。
该模块提供了一系列函数来控制鼠标移动、点击、拖拽以及键盘输入,同时具备屏幕截图、图像识别、颜色检测等实用功能。通过简单的 API 调用,开发者即可实现复杂的桌面自动化任务。
首先需要通过 pip 安装 PyAutoGUI 及其依赖项(如 Pillow):
pip install pyautogui
若需使用剪贴板功能(如自动粘贴文本),建议额外安装 pyperclip:
pip install pyperclip
在 Python 脚本中导入模块:
import pyautogui
import pyperclip
PyAutoGUI 可以精确控制鼠标的移动、点击和拖拽行为。
moveTo(x, y): 将鼠标移动到指定坐标。click(x=None, y=None, button='left'): 单击鼠标,默认左键。doubleClick(x=None, y=None, button='left'): 双击鼠标。rightClick(x=None, y=None): 右键单击。dragTo(x, y, duration=0.5): 拖动鼠标到目标位置。示例:
import pyautogui
# 获取屏幕尺寸
width, height = pyautogui.size()
# 移动到屏幕中央
pyautogui.moveTo(width / 2, height / 2)
# 单击左键
pyautogui.click()
模拟键盘输入是自动化交互的核心部分。
typewrite(message, interval=0.1): 逐字输入字符串,可设置打字间隔。press(key): 按下并释放单个键。hotkey(*keys): 按下组合键。示例:
import pyautogui
# 输入文本
pyautogui.typewrite('Hello, World!', interval=0.1)
# 模拟按键
pyautogui.press('enter')
# 组合键 Ctrl+V
pyautogui.hotkey('ctrl', 'v')
pyautogui.screenshot() 可截取当前屏幕或指定区域,返回 PIL Image 对象。
# 截取全屏
screenshot = pyautogui.screenshot()
screenshot.save('full_screen.png')
# 截取指定区域 (x, y, width, height)
region_img = pyautogui.screenshot(region=(0, 0, 300, 400))
region_img.save('region.png')
利用 locateOnScreen 可以在屏幕上查找特定图片的位置。当图片匹配失败时,可通过调整 confidence 参数提高容错率。
import pyautogui
img_path = 'button_icon.png'
location = pyautogui.locateOnScreen(img_path, confidence=0.8)
if location:
center_x, center_y = pyautogui.center(location)
pyautogui.click(center_x, center_y)
else:
print('未找到目标图像')
注意: confidence 参数取值范围 0 到 1。值越高匹配越严格但速度越慢;值越低匹配越宽松但可能误判。
实时获取鼠标坐标及所在像素颜色常用于调试或游戏辅助。
import pyautogui
import time
def get_mouse_info():
time.sleep(2) # 等待准备时间
x, y = pyautogui.position()
rgb = pyautogui.pixel(x, y)
print(f'坐标:({x}, {y}), RGB: {rgb}')
return x, y
为防止自动化脚本失控导致硬件损坏或数据丢失,PyAutoGUI 提供了安全开关。当 FAILSAFE=True 时,将鼠标快速移至屏幕左上角会抛出异常中断程序。
import pyautogui
# 禁用安全开关(谨慎使用)
pyautogui.FAILSAFE = False
为避免操作过快导致界面未加载完成,可设置全局暂停时间。
import pyautogui
# 每次操作后暂停 2.5 秒
pyautogui.PAUSE = 2.5
由于直接输入中文可能存在编码问题,结合 pyperclip 可实现更稳定的文本发送。
import pyautogui
import pyperclip
text = '你好,世界'
pyperclip.copy(text)
pyautogui.hotkey('ctrl', 'v')
本案例演示如何通过图像识别定位微信窗口,并自动发送预设消息。
wechat_icon.png。search_box.png。messages.txt。import pyautogui
import pyperclip
import time
# 配置参数
pyautogui.PAUSE = 1
pyautogui.FAILSAFE = True
target_account = 'friend_id'
# 最小化所有窗口以回到桌面
pyautogui.hotkey('win', 'm')
# 1. 打开微信
loc_icon = pyautogui.locateOnScreen('wechat_icon.png', confidence=0.7)
if loc_icon:
pyautogui.doubleClick(pyautogui.center(loc_icon))
time.sleep(3)
# 2. 搜索联系人
loc_search = pyautogui.locateOnScreen('search_box.png', confidence=0.7)
if loc_search:
pyautogui.click(pyautogui.center(loc_search))
pyautogui.typewrite(target_account)
pyautogui.press('enter')
time.sleep(2)
# 3. 读取并发送消息
with open('messages.txt', 'r', encoding='utf-8') as f:
lines = f.readlines()
for msg in lines:
msg = msg.strip()
if not msg:
continue
pyperclip.copy(msg)
pyautogui.hotkey('ctrl', 'v')
pyautogui.press('enter')
time.sleep(1)
locateOnScreen 默认在主屏工作,多屏环境需明确指定屏幕索引或使用 locateCenterOnScreen。PyAutoGUI 是一款功能强大且易于上手的桌面自动化工具。通过掌握其鼠标、键盘控制及图像识别能力,开发者可以显著提升重复性工作的效率。在实际应用中,建议结合错误处理机制与安全配置,确保自动化流程的稳定性与安全性。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online