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)

注意事项

  1. 故障安全:启用 FAILSAFE 功能,将鼠标移动到屏幕左上角会触发 pyautogui.FailSafeException 异常,停止脚本执行。
  2. 速度控制:使用 duration 参数控制鼠标移动速度,避免动作太快导致问题。
  3. 多显示器:在多显示器环境下,PyAutoGUI 会将所有显示器视为一个大的虚拟屏幕。
  4. 权限问题:在某些操作系统上可能需要管理员权限才能控制鼠标和键盘。
  5. 图像识别locateOnScreen() 对图像大小、颜色和分辨率敏感,可能需要调整参数或使用灰度匹配。

希望这个教程能帮助你开始使用 PyAutoGUI 进行自动化任务!









results matching ""

    No results matching ""