pyautogui 介绍

1、简介

pyautogui 是 Python 跨平台键鼠自动化库,模拟真实的鼠标、键盘硬件行为,不识别系统控件,基于屏幕像素工作。

  • 支持 Windows /macOS/ Linux
  • 适合:游戏、无控件的客户端、图像识别点击
  • 缺点:窗口最小化 / 被遮挡就失效;DPI 缩放容易坐标漂移;界面布局一变脚本容易崩
  • 安全机制:鼠标快速挪到屏幕左上角会抛异常终止脚本,防止脚本失控

安装

pip install pyautogui pillow opencv-python

opencv-python 用于识图的 confidence(相似度)参数。

基础初始化

import pyautogui
import time

# 每一步操作默认等待0.5秒
pyautogui.PAUSE = 0.5
# 开启故障保护
pyautogui.FAILSAFE = True

2、鼠标相关

2.1 获取屏幕大小、鼠标当前坐标

# 屏幕宽高
screen_w, screen_h = pyautogui.size()
print(f"屏幕:宽{screen_w}, 高{screen_h}")

# 获取鼠标当前位置
x, y = pyautogui.position()
print(f"鼠标位置 x={x}, y={y}")

2.2 鼠标移动

# moveTo:绝对坐标移动,duration移动耗时(秒)
pyautogui.moveTo(400, 300, duration=0.6)

# move:相对当前位置偏移,x+50,y+20
pyautogui.move(50, 20, duration=0.3)

2.3 点击、右键、双击、滚轮

# 左键点击指定坐标
pyautogui.click(x=400, y=300)

# 右键
pyautogui.rightClick(x=400, y=300)

# 双击
pyautogui.doubleClick(x=400, y=300)

# 滚轮,正数向上,负数向下
pyautogui.scroll(-8)

2.4 拖拽

# 从当前位置拖拽到目标坐标
pyautogui.dragTo(700, 400, duration=1)

3、键盘操作

3.1 输入文本

# 直接输入字符串,光标需要已经在输入框内
pyautogui.typewrite("hello 测试123")

# 每个字符间隔0.1秒输入
pyautogui.typewrite("abc123", interval=0.1)

3.2 单按键、组合快捷键

# 单个按键
pyautogui.press("enter")
pyautogui.press("tab")
pyautogui.press("backspace")
pyautogui.press("delete")

# hotkey 组合键
pyautogui.hotkey("ctrl", "a")   # 全选
pyautogui.hotkey("ctrl", "c")   # 复制
pyautogui.hotkey("ctrl", "v")   # 粘贴

常用按键名:enter、tab、escape、home、end、up/down/left/right、ctrl、shift、alt、win

4、图 + 图像识别点击(高频)

# 全屏截图,PIL对象
img = pyautogui.screenshot()
img.save("full_screen.png")

# locateCenterOnScreen:找到模板图片中心点,找不到返回None
# confidence 相似度0~1,越高越严格,0.7‑0.9常用
pos = pyautogui.locateCenterOnScreen("btn.png", confidence=0.8)

if pos:
    print(f"识别到按钮:{pos}")
    pyautogui.click(pos)
else:
    print("未找到图片")

# region=(左上角x,y,宽度,高度) 限定搜索区域,提升速度
pos2 = pyautogui.locateCenterOnScreen("btn.png", confidence=0.8, region=(200,100,900,700))

4.1 封装工具函数:等待图片出现再点击(实际脚本必用)

def click_by_image(img_path, timeout=5, confidence=0.8):
    start = time.time()
    while time.time() - start < timeout:
        point = pyautogui.locateCenterOnScreen(img_path, confidence=confidence)
        if point:
            pyautogui.click(point)
            return True
        time.sleep(0.3)
    return False

# 调用
# click_by_image("btn.png", timeout=8)

5、像素颜色判断

# 获取坐标点RGB
r, g, b = pyautogui.pixel(300, 300)
print(r,g,b)

# 判断某个点是否为指定颜色
if pyautogui.pixelMatchesColor(300, 300, (255,255,255)):
    print("该点是白色")

6、完整小流程 Demo

import pyautogui
import time
pyautogui.PAUSE = 0.4

# 移动鼠标点击
pyautogui.moveTo(500, 400, duration=0.5)
pyautogui.click()

# 输入文字
pyautogui.typewrite("pyautogui 测试脚本")
pyautogui.press("enter")

# 全选删除
pyautogui.hotkey("ctrl", "a")
time.sleep(0.2)
pyautogui.press("delete")

7、重要踩坑总结

1. Windows 系统显示缩放 125%/150%,会出现坐标偏移问题。
2. 窗口最小化、被遮挡,识图和鼠标点击全部失效。
3. 识图用 PNG 模板,不要用 JPG,压缩会导致像素不匹配识别失败。
4. 只适合兜底场景;Windows 标准桌面自动化优先用 `pywinauto(UIA)`。

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。

赏

文章标题:pyautogui 介绍

本文作者:伟生

发布时间:2026-10-18, 21:10:00

最后更新:2026-10-18, 21:15:00

原始链接:http://yoursite.com/2026/10/18/basic_24_pyautogui/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏