PyAutoGUI 教程
PyAutoGUI 是一个 Python 模块,用于以编程方式控制鼠标和键盘。它可以用于自动化 GUI 任务,如填写表单、点击按钮、截图等。
安装
pip install pyautogui
基本功能
1. 鼠标控制
获取屏幕尺寸
import pyautogui
screen_width, screen_height = pyautogui.size()
print(f"屏幕宽度: {screen_width}, 屏幕高度: {screen_height}")
获取当前鼠标位置
x, y = pyautogui.position()
print(f"当前鼠标位置: X={x}, Y={y}")
移动鼠标
# 移动到绝对位置
pyautogui.moveTo(100, 100, duration=1.5) # 用1.5秒移动到(100,100)
# 相对当前位置移动
pyautogui.move(50, 50, duration=0.5) # 向右移动50像素,向下移动50像素
点击鼠标
# 左键单击
pyautogui.click() # 当前位置单击
pyautogui.click(200, 200) # 在(200,200)位置单击
# 右键单击
pyautogui.rightClick()
# 中键单击
pyautogui.middleClick()
# 双击
pyautogui.doubleClick()
# 指定点击次数和间隔
pyautogui.click(clicks=3, interval=0.25) # 三连击,每次间隔0.25秒
拖动鼠标
# 拖动到绝对位置
pyautogui.dragTo(300, 300, duration=1)
# 相对当前位置拖动
pyautogui.drag(100, 0, duration=0.5) # 向右拖动100像素
滚动鼠标
pyautogui.scroll(10) # 向上滚动10个单位
pyautogui.scroll(-10) # 向下滚动10个单位
2. 键盘控制
输入文本
pyautogui.write("Hello, world!", interval=0.25) # 每个字符间隔0.25秒
按下和释放按键
pyautogui.keyDown('shift') # 按下shift键
pyautogui.press('4') # 按下并释放4键
pyautogui.keyUp('shift') # 释放shift键
组合键
pyautogui.hotkey('ctrl', 'c') # 按下ctrl+c
pyautogui.hotkey('ctrl', 'v') # 按下ctrl+v
特殊按键
pyautogui.press(['left', 'left', 'right']) # 按左箭头两次,右箭头一次
3. 屏幕操作
截图
# 全屏截图
screenshot = pyautogui.screenshot()
screenshot.save('screenshot.png')
# 区域截图
region = (100, 100, 300, 400) # (x, y, width, height)
screenshot = pyautogui.screenshot(region=region)
定位图像
# 在屏幕上查找图像位置
button_location = pyautogui.locateOnScreen('button.png')
if button_location:
print("找到按钮位置:", button_location)
pyautogui.click(button_location)
else:
print("未找到按钮")
获取像素颜色
pixel_color = pyautogui.pixel(100, 200)
print(f"位置(100,200)的像素颜色: {pixel_color}")
高级功能
1. 安全措施
PyAutoGUI 提供了安全措施来防止脚本失控:
# 启用故障安全功能 - 将鼠标移动到左上角会触发异常
pyautogui.FAILSAFE = True
# 设置每个动作之间的延迟
pyautogui.PAUSE = 0.5 # 每个动作后暂停0.5秒
2. 消息框
# 显示警告框
pyautogui.alert('这是一个警告!')
# 显示确认框
response = pyautogui.confirm('要继续吗?')
print(response) # 返回'OK'或'Cancel'
# 显示提示框
name = pyautogui.prompt('请输入你的名字')
print(name)
# 显示密码输入框
password = pyautogui.password('请输入密码')
print(password)
3. 窗口管理
# 获取活动窗口
active_window = pyautogui.getActiveWindow()
print(active_window.title)
# 获取所有窗口
all_windows = pyautogui.getAllWindows()
for window in all_windows:
print(window.title)
# 窗口操作
window = pyautogui.getWindowsWithTitle('记事本')[0]
window.minimize() # 最小化
window.maximize() # 最大化
window.restore() # 恢复
window.close() # 关闭
实用示例
示例1:自动化登录
import pyautogui
import time
# 等待浏览器启动
time.sleep(5)
# 输入用户名
pyautogui.write('username', interval=0.1)
pyautogui.press('tab')
# 输入密码
pyautogui.write('password', interval=0.1)
pyautogui.press('enter')
示例2:绘制螺旋
import pyautogui
import math
import time
time.sleep(5) # 切换到画图程序
distance = 200
while distance > 0:
pyautogui.drag(distance, 0, duration=0.1) # 向右
distance -= 5
pyautogui.drag(0, distance, duration=0.1) # 向下
pyautogui.drag(-distance, 0, duration=0.1) # 向左
distance -= 5
pyautogui.drag(0, -distance, duration=0.1) # 向上
示例3:游戏自动化
import pyautogui
import random
import time
while True:
# 随机移动鼠标
x = random.randint(0, pyautogui.size().width)
y = random.randint(0, pyautogui.size().height)
pyautogui.moveTo(x, y, duration=0.5)
# 随机点击
if random.random() > 0.5:
pyautogui.click()
# 随机按键
pyautogui.press(random.choice(['up', 'down', 'left', 'right']))
time.sleep(1)
注意事项
- 故障安全:启用
FAILSAFE
功能,将鼠标移动到屏幕左上角会触发pyautogui.FailSafeException
异常,停止脚本执行。 - 速度控制:使用
duration
参数控制鼠标移动速度,避免动作太快导致问题。 - 多显示器:在多显示器环境下,PyAutoGUI 会将所有显示器视为一个大的虚拟屏幕。
- 权限问题:在某些操作系统上可能需要管理员权限才能控制鼠标和键盘。
- 图像识别:
locateOnScreen()
对图像大小、颜色和分辨率敏感,可能需要调整参数或使用灰度匹配。
希望这个教程能帮助你开始使用 PyAutoGUI 进行自动化任务!