【自动化】【Python】PyAutoGUI:让你的Python自动化操作电脑,解放双手!

【自动化】【Python】PyAutoGUI:让你的Python自动化操作电脑,解放双手!

更多的程序员文章收录在

【JAVA方向学习文章视频汇总】

文章目录


按键精灵?

模拟鼠标键盘动作的软件
按键精灵是一款模拟鼠标键盘动作的软件。通过制作脚本,可以让按键精灵代替双手,自动执行一系列鼠标键盘动作。
按键精灵简单易用,不需要任何编程知识就可以做出功能强大的脚本。只要电脑前用双手可以完成的动作,按键精灵都可以替代完成。

一、PyAutoGUI是什么?

PyAutoGUI是一个Python库,能够让Python控制鼠标和键盘,实现GUI自动化。它可以:

控制鼠标移动
执行点击、拖拽操作
滚动鼠标滚轮
输入文字
按下和释放按键
截取屏幕截图
定位图像位置
总之,PyAutoGUI可以模拟人类在电脑上的各种操作,让你的Python程序成为一个"电脑操作员"。

二、安装PyAutoGUI

安装超简单,只需一行命令:

pip install pyautogui
安装完成后,我们来测试一下是否安装成功:

import pyautogui
print(pyautogui.position()) # 显示当前鼠标位置
运行后,你会看到当前鼠标指针的坐标位置,说明安装成功!

三、基础操作:控制鼠标

  1. 获取屏幕大小
    在控制鼠标之前,我们先了解一下屏幕大小:

import pyautogui

获取屏幕的宽度和高度

screen_width, screen_height = pyautogui.size()
print(f"屏幕宽度: {screen_width}, 屏幕高度: {screen_height}")
2. 移动鼠标
我们可以将鼠标移动到屏幕的特定位置:

import pyautogui
import time

移动鼠标到坐标(100, 100)

pyautogui.moveTo(100, 100, duration=1) # duration是移动所需时间(秒)

从当前位置相对移动

pyautogui.move(100, 0, duration=1) # 向右移动100像素
3. 鼠标点击
点击操作也很简单:

import pyautogui
import time

先移动再点击

pyautogui.moveTo(100, 100, duration=1)
pyautogui.click() # 在当前位置左键单击

也可以直接在指定位置点击

pyautogui.click(x=200, y=200) # 在(200, 200)处左键单击

右键点击

pyautogui.rightClick(x=300, y=300)

双击

pyautogui.doubleClick(x=400, y=400)
4. 拖拽操作
有时我们需要拖动一些东西:

import pyautogui
import time

从(100, 100)拖拽到(300, 300)

pyautogui.dragTo(300, 300, duration=1, button=‘left’)

从当前位置相对拖拽

pyautogui.drag(100, 0, duration=1, button=‘left’) # 向右拖拽100像素
5. 滚动鼠标滚轮
import pyautogui
import time

向上滚动10个单位

pyautogui.scroll(10)

向下滚动10个单位

pyautogui.scroll(-10)
四、键盘操作
PyAutoGUI不仅能控制鼠标,还能模拟键盘输入:

  1. 输入文字
    import pyautogui
    import time

点击一个文本框

pyautogui.click(x=100, y=100)
time.sleep(0.5) # 等待点击生效

输入文字

pyautogui.write(‘Hello, PyAutoGUI!’)

可以控制输入速度

pyautogui.write(‘这是慢速输入’, interval=0.2) # 每个字符间隔0.2秒
2. 特殊按键
对于Shift、Ctrl、Alt等特殊按键,可以这样使用:

import pyautogui
import time

按下并释放一个键

pyautogui.press(‘enter’)

组合键

pyautogui.hotkey(‘ctrl’, ‘c’) # 复制
pyautogui.hotkey(‘ctrl’, ‘v’) # 粘贴

按下不释放

pyautogui.keyDown(‘shift’)
pyautogui.press(‘4’) # 输入$
pyautogui.keyUp(‘shift’)
PyAutoGUI支持的特殊按键名称包括:

enter(回车)
esc(退出)
tab(制表符)
alt, ctrl, shift(组合键)
up, down, left, right(方向键)
f1到f12(功能键)
等等……
五、屏幕截图和图像识别
PyAutoGUI的高级功能是可以截图和查找屏幕上的图像位置:

  1. 屏幕截图
    import pyautogui

对整个屏幕进行截图

screenshot = pyautogui.screenshot()
screenshot.save(‘我的屏幕截图.png’)

对指定区域截图

region_screenshot = pyautogui.screenshot(region=(0, 0, 300, 400)) # 左上角300x400的区域
region_screenshot.save(‘区域截图.png’)
2. 图像定位
这个功能非常有用,可以找到屏幕上特定图像的位置:

import pyautogui

查找屏幕上的图像位置

try:
position = pyautogui.locateOnScreen(‘目标图片.png’)
print(f"找到图片,位置: {position}")

# 获取图像的中心点 center = pyautogui.center(position) print(f"图片中心点: {center}") # 点击图像中心 pyautogui.click(center) 

except:
print(“未找到指定图片”)
图像定位在自动化测试中特别有用,比如自动点击某个按钮、识别特定的界面元素等。

六、安全机制
PyAutoGUI有一个安全机制,当你把鼠标快速移动到屏幕的左上角时,程序会暂停(引发异常)。这个功能是为了防止程序失控,让你有机会终止程序。

如果你不需要这个功能,可以关闭它:

import pyautogui

关闭故障保护

pyautogui.FAILSAFE = False
但建议保留这个功能,以防万一。

七、小技巧

  1. 添加暂停
    自动化操作最好添加适当的暂停,让程序有时间反应:

import pyautogui
import time

全局暂停设置

pyautogui.PAUSE = 0.5 # 每次操作后暂停0.5秒

或者使用time.sleep

pyautogui.click()
time.sleep(1) # 等待1秒
pyautogui.press(‘enter’)
2. 获取鼠标位置
在编写脚本时,我们经常需要知道要点击的位置坐标,这个小工具很有用:

import pyautogui
import time

print(“请将鼠标移到目标位置,5秒后记录坐标”)
for i in range(5, 0, -1):
print(i)
time.sleep(1)

x, y = pyautogui.position()
print(f"当前鼠标位置:x={x}, y={y}")
3. 消息框
PyAutoGUI还提供了简单的消息框功能:

import pyautogui

显示一个警告框

pyautogui.alert(text=‘操作已完成’, title=‘提示’, button=‘OK’)

确认框

response = pyautogui.confirm(text=‘是否继续?’, title=‘确认’, buttons=[‘是’, ‘否’, ‘取消’])
print(f"用户选择了:{response}")

输入框

name = pyautogui.prompt(text=‘请输入你的名字’, title=‘输入’, default=‘’)
print(f"你好,{name}")

密码输入框

password = pyautogui.password(text=‘请输入密码’, title=‘密码’, default=‘’, mask=‘*’)
PyAutoGUI是一个功能强大的Python自动化库,可以帮助你:

自动化重复性操作
创建简单的自动化测试
编写游戏机器人(虽然有些游戏不允许)
自动填写表格
模拟用户操作
是不是感觉学会了这个,工作效率能提高一大截?

不过要注意,虽然PyAutoGUI很强大,但它并不适合所有自动化任务。如果你在自动化网页操作,可能Selenium更合适;如果是自动化API测试,可能requests库更适合。

学会PyAutoGUI只是自动化的开始,希望这篇文章能帮助你迈出自动化的第一步!

感觉上面的这些东西拼在一起,就可以完成一个按键精灵了。
还是自定义的按键精灵。
而且还支持多种图片的。这个问题我问了一下AI。
PyAutoGUI 和 按键精灵 在功能上相似,但实现方式不同。按键精灵是独立的软件工具,通过模拟键盘和鼠标操作实现自动化;而 PyAutoGUI 是 Python 语言编写的库,需要编写代码实现自动化。 ‌

  • 核心差异

‌按键精灵‌

无需编程,通过录制和回放操作实现自动化。
支持模拟键盘按键、鼠标点击等基础操作。 ‌
‌PyAutoGUI‌

需使用Python代码调用库函数实现自动化。
支持更复杂的操作,如屏幕截图、窗口定位、故障安全保护等。 ‌

  • 扩展性

按键精灵功能相对固定,扩展性有限。
PyAutoGUI可通过Python代码调用其他库(如 pywinauto )实现更复杂的功能。

然后AI还给了一个按键精灵DEMO的小段代码:

import pyautogui import time # 模拟按下"Win + R"打开运行对话框 pyautogui.hotkey('win','r') time.sleep(0.5)# 在运行对话框中输入"notepad"并按回车,打开记事本 pyautogui.typewrite('notepad') pyautogui.press('enter')# 等待记事本打开 time.sleep(1)# 在记事本中写入文字 pyautogui.typewrite('Hello, PyAutoGUI!')

🍑 碰上好的大量知识点的视频想把里面的字幕拼成上图的样子?

1 准备截图工具,
我一般是使用faststone Capture
下载地址见资源下载
2 第一张图一般截一个全的带脸的

在这里插入图片描述


后面的就截字幕的部分就可以了。我一般是设置一个重复截的快捷键。其实不用严格的与第一张同宽。拼图工具会调整为同宽。

在这里插入图片描述


3 整理检查所有图片,看看是不是截图有重复,有遗漏。

在这里插入图片描述


4 打开工具拼合

在这里插入图片描述

完成!

总结及资源下载

截图工具:
系统如何让截图带鼠标指针,推荐两款可以带鼠标指针截图的软件-faststone Capture

另一个截图工具
系统如何让截图带鼠标指针,推荐两款可以带鼠标指针截图的软件-Snipaste

本文章里面所使用的字幕拼接工具:
下载地址:
图片拼接-支持jpg格式,一般用于拼接一个视频里的N多字幕

B站视频讲解用法:
【工具】图片拼接-支持jpg格式,一般用于拼接一个视频里的N多字幕

选择了也要努力,没有远虑必有近忧!

Read more

[Java EE 进阶] 一文吃透 Spring IoC&DI:核心概念 + 实战用法 + 面试考点

[Java EE 进阶] 一文吃透 Spring IoC&DI:核心概念 + 实战用法 + 面试考点

摘要 :  本文深入解析了Spring框架的核心机制IoC(控制反转)和DI(依赖注入)。通过汽车制造案例,对比传统高耦合开发与Spring解耦方案,阐释IoC将对象创建权交给容器、DI实现依赖注入的核心思想。详细介绍了Bean存储的五种类注解(@Controller/@Service等)和@Bean方法注解,以及三种依赖注入方式(属性/构造方法/Setter注入)。针对多Bean注入问题,提出@Primary、@Qualifier和@Resource三种解决方案。最后总结IoC与DI的关系,指出这是理解Spring框架设计思想的基础,也是学习AOP、事务管理等高级特性的前提。文章系统性地讲解了Spring IoC&DI的核心概念和实战应用 在 Spring 体系的学习中,IoC(控制反转)和 DI(依赖注入)是贯穿始终的核心,也是 Spring 框架的灵魂。掌握 IoC&DI 不仅能理解 Spring 的设计思想,

人工智能篇---Node.js

人工智能篇---Node.js

Node.js:让JavaScript突破浏览器的“越狱”传奇 如果说JavaScript是一个武功高强的侠客,那浏览器就是关住他的"牢笼"。而Node.js,就是一场精心策划的"越狱"——它让JavaScript从浏览器中解放出来,从此天地广阔,大有作为。 一、Node.js是什么?——一场技术革命的起点 1.1 一个天才的创造 2009年,一位名叫Ryan Dahl的工程师在厌倦了Apache HTTP服务器的种种限制后,做了一件惊人的事:他把Google Chrome浏览器的核心——V8引擎——从浏览器中剥离出来,让它直接在服务器上运行JavaScript。 这个项目的名字就叫Node.js。 它的核心定义是:Node.js是一个基于Chrome V8引擎的JavaScript运行时环境。它让开发者可以使用JavaScript编写服务器端代码,实现了前端和后端语言的统一。 1.2 灵感来源:从Gmail开始的思考 有趣的是,Ryan

为什么 Claude 不用 RAG?——理解 RAG 的真实边界,再用 Spring AI 落地三种架构(Java 架构师的 AI 工程笔记 06)

为什么 Claude 不用 RAG?——理解 RAG 的真实边界,再用 Spring AI 落地三种架构(Java 架构师的 AI 工程笔记 06)

Spring AI Alibaba 实战(五):RAG 三种架构 系列目标:从零构建一个机票比价 Agent 本篇目标:理解 RAG 本质 + 掌握 Two-Step / Agentic / Hybrid 三种 RAG 架构 + 构建 Document ETL 管道 + VectorStore 选型 前置知识:已完成第四篇,掌握 Memory 和 Checkpoint 理论篇 一、为什么需要 RAG——让 LLM 做"开卷考试" 1.1 RAG 解决什么问题 前几章我们的机票 Agent 已经能查询航班、

安装 Node.js 22+,配置 OpenAI Node.js 库、Vercel AI SDK 基础环境

文章目录 * 一、安装 Node.js 22+ * 二、初始化项目与安装依赖 * 1. 新建项目文件夹,终端进入目录,执行初始化命令: * 2. 安装核心依赖: * 三、基础配置(关键步骤) * 1. 配置 OpenAI 库 * 2. 配置 Vercel AI SDK * 四、运行测试 一、安装 Node.js 22+ 1. 官网下载:访问 Node.js 官网,选择 v22.x 稳定版(LTS 或 Current 均可),按系统(Windows/Mac/

阿里云全品类 8 折券限时领,建站 / AI / 存储通用 立即领取