跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Python

Python 自动化实战:pyautogui 鼠标键盘控制指南

pyautogui 是 Python 中用于控制鼠标和键盘的第三方库,适合实现 GUI 自动化。安装方法、核心 API 及实战技巧,涵盖屏幕信息获取、光标移动、点击拖拽、键盘输入及组合键模拟等功能。通过实际代码示例展示了如何平滑控制鼠标轨迹、模拟打字输入以及使用弹窗进行交互,同时提醒了安全注意事项和延迟控制策略,帮助开发者快速上手桌面自动化任务。

GitMaster发布于 2025/2/5更新于 2026/10/2093 浏览
Python 自动化实战:pyautogui 鼠标键盘控制指南

简介

在 Python 生态里,如果你想让程序接管鼠标和键盘,pyautogui 是个非常实用的第三方库。它不随 Python 自带,需要单独安装。虽然功能强大,但用之前最好心里有数:这玩意儿会直接操作你的系统输入设备,跑的时候别把鼠标甩飞了。

环境准备

安装很简单,直接用 pip 即可。注意,现代版本通常会自动处理依赖(如 Pillow),不需要单独折腾 image 模块了。

pip install pyautogui

鼠标控制

1. 屏幕与位置

先搞清楚你在哪块屏幕上干活。size() 能告诉你分辨率,position() 能实时反馈当前光标坐标。

import pyautogui

print(pyautogui.size())  # 输出类似 (1920, 1080)
print(pyautogui.position())  # 输出当前坐标,例如 (500, 300)
2. 移动光标

有两种移动方式:绝对定位和相对移动。

  • 绝对移动:moveTo(x, y)。参数是屏幕上的具体坐标。如果想让动作看起来自然点,可以加个 duration 参数控制耗时,不然鼠标会瞬移。
  • 相对移动:moveRel(x, y)。基于当前位置偏移。比如想往下挪一点,就写 moveRel(0, 100)。
# 平滑移动到 (100, 100),耗时 1 秒
pyautogui.moveTo(100, 100, duration=1)

# 从当前位置向下移动 300 像素
pyautogui.moveRel(0, 300, duration=1)
3. 点击与拖拽

最常用的操作莫过于点击。click(x, y) 默认左键,可以通过 button 参数指定右键或中键。双击和右键也有专用函数 doubleClick() 和 rightClick()。

关于拖拽,dragTo 和 dragRel 类似于移动函数,区别在于它们会在移动过程中保持鼠标左键按下状态。这在自动绘图或移动窗口时很有用。

# 在 (370, 120) 处点击
pyautogui.click(370, 120)

# 模拟画板绘图:按住左键拖动
pyautogui.dragRel(100, 0, duration=1)  # 向右
pyautogui.dragRel(0, 100, duration=1)  # 向下
pyautogui.dragRel(-100, 0, duration=1) # 向左
pyautogui.dragRel(0, -100, duration=1) # 向上
4. 滚轮

scroll() 接受像素值,正数向上滚,负数向下滚。

pyautogui.scroll(200)  # 向上滚动 200 像素

键盘控制

1. 打字

typewrite() 是最直接的输入方式。记得先确保焦点在文本框里,否则字可能打不到预期位置。

# 先点击激活输入框
pyautogui.click(100, 200)
# 输入内容
pyautogui.typewrite('hello world!')
2. 组合键与单键

除了打字,还能模拟快捷键。hotkey() 支持多键组合,比如 Ctrl+C 复制,Ctrl+V 粘贴。press() 则用于单次按键,比如回车或方向键。

# 模拟 Ctrl + V 粘贴
pyautogui.hotkey('ctrl', 'v')

# 模拟 Ctrl + Shift + Esc 打开任务管理器
pyautogui.hotkey('ctrl', 'shift', 'esc')

# 按 Enter 键
pyautogui.press('enter')

# 按 F1 键
pyautogui.press('f1')

# 按左方向键
pyautogui.press('left')

消息弹窗

调试脚本时,如果需要暂停等待用户确认,可以用内置的弹窗函数,类似 JavaScript 的体验。

  • alert(): 只有 OK 按钮,返回 None。
  • confirm(): 有 OK 和 Cancel,返回对应字符串。
  • prompt(): 带输入框,返回输入的字符串。
# 显示提示并暂停
pyautogui.alert('脚本即将开始运行,请准备好!')

# 询问是否继续
if pyautogui.confirm('确定要执行吗?') == 'OK':
    print('开始执行...')

# 获取用户输入
name = pyautogui.prompt('请输入你的名字:')

小贴士

  1. 安全第一:运行前建议先在测试环境验证,避免误删文件或乱改设置。pyautogui 没有撤销机制。
  2. 延迟控制:如果操作太快导致目标没加载出来,可以在关键步骤间加入 time.sleep()。
  3. 截图定位:配合 screenshot() 和图像识别功能,可以实现更智能的界面交互,但这属于进阶玩法了。

目录

  1. 简介
  2. 环境准备
  3. 鼠标控制
  4. 1. 屏幕与位置
  5. 2. 移动光标
  6. 平滑移动到 (100, 100),耗时 1 秒
  7. 从当前位置向下移动 300 像素
  8. 3. 点击与拖拽
  9. 在 (370, 120) 处点击
  10. 模拟画板绘图:按住左键拖动
  11. 4. 滚轮
  12. 键盘控制
  13. 1. 打字
  14. 先点击激活输入框
  15. 输入内容
  16. 2. 组合键与单键
  17. 模拟 Ctrl + V 粘贴
  18. 模拟 Ctrl + Shift + Esc 打开任务管理器
  19. 按 Enter 键
  20. 按 F1 键
  21. 按左方向键
  22. 消息弹窗
  23. 显示提示并暂停
  24. 询问是否继续
  25. 获取用户输入
  26. 小贴士

更多推荐文章

查看全部
  • OpenClaw Skill 开发指南:从零创建第一个 AI 技能
  • 算法模拟类题目解析与代码实现
  • Flutter for OpenHarmony 实战:flex_color_scheme 构建鸿蒙美学 UI
  • 近端策略优化算法 (PPO) 详解与 PyTorch 实现
  • 详解大模型上下文窗口 200k 的含义与 Token 概念
  • AI 辅助编程的边界探索:当 Copilot 学会写测试
  • Mistral AI 发布开源多模态模型 Pixtral Large 并升级 le Chat
  • Coze AI 应用开发指南:从智能体到 Web 部署
  • Linux 运维命令速查:进程查看与日志分析
  • Flutter for OpenHarmony:基于 dart_openai 集成 AIGC 大模型实战
  • 无人机航测内业处理(iTwin Capture Modeler)
  • Python GUI 开发:主流框架对比与实战选择
  • FPGA(一)Quartus II 13.1及modelsim与modelsim-altera安装教程及可能遇到的相关问题
  • iOS 设备运行 Minecraft Java 版:PojavLauncher 部署与性能优化指南
  • Claude Code 核心执行模式详解:权限、计划与自动编辑
  • Ghidra 开源逆向分析工具详解
  • 2026年3月AI动态:模型窗口突破与智能体生态扩张
  • 主流 AI 工具生成 Word 文档全解析与实操指南
  • Fooocus 部署实践:本地手动配置与云端一键启用对比
  • AI 编程工具深度对比:Cursor、Copilot 与 Claude Code

相关免费在线工具

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online