[Python] Python自动化:PyAutoGUI的基本操作
初次学习,如有错误还请指正
目录
PyAutoGUI介绍
PyAutoGUI安装
鼠标相关操作
鼠标移动
鼠标偏移
获取屏幕分辨率
获取鼠标位置
案例:实时获取鼠标位置
鼠标点击
左键单击
点击次数
多次有时间间隔的点击
右键/中键点击
移动时间
总结
鼠标的按下、抬起
鼠标滑轮滑动
键盘相关操作
键盘输入
中文输入
按键输入
组合按键
按键的按住和抬起
截取屏幕图像
消息框和输入框
PyAutoGUI介绍
PyAutoGUI 是一个用于自动化鼠标和键盘操作的 Python 模块,能够轻松实现 GUI 自动化任务。它支持多种操作系统(Windows、macOS 和 Linux),并且兼容 Python 2 和 Python 3
PyAutoGUI安装
在命令行窗口或打开pycharm的终端,输入:
pip install pyautogui
之后使用的时候直接导入包即可:
import pyautogui
鼠标相关操作
鼠标移动
基于屏幕分辨率让鼠标移动到一个坐标位置(按照分辨率来计算)
# 参数:x y
pyautogui.moveTo(100,100)
运行后会发现鼠标立刻被移动到了靠近左上角的位置。若要移动到最左上角则将x和y值都改为0即可。
注意:x值和y值不能超出你目前电脑的分辨率范围(也不能正好和屏幕分辨率相同),否则会报错。 例如你的电脑屏幕分辨率为1920*1080。你想要将鼠标移动到右下角时,若将x值设为1920,y值设为1080,此时会报错。只能将x设为1919,y设为1079才行。 也就是说坐标值最小写0,最大写到分辨率-1.
除此之外还可以规定鼠标花多少时间来移动到这个位置,只需要在坐标后加上时间参数即可:
pyautogui.moveTo(100,100,1)
运行后发现鼠标用了一秒来慢慢移动到规定位置,并且能显示出移动的轨迹,而不像之前一样瞬间到达。
鼠标偏移
基于目前鼠标的位置进行移动
#参数 x y
pyautogui.move(100,100)
其中,当x为正值时,鼠标向右移动。x为负值时,鼠标向左移动。当y为正值时,鼠标向下移动。y为负值时,鼠标向上移动。
注意:当前鼠标位置偏移后不能超过屏幕分辨率,否则会报错。 其次,当前鼠标的位置不能是(0,0),否则也会报错。
同样,鼠标偏移也可以加上时间参数
pyautogui.move(100,100,1)
获取屏幕分辨率
pyautogui.size()
#获取屏幕分辨率
print(pyautogui.size())
获取鼠标位置
pyautogui.position()
print(pyautogui.position())
案例:实时获取鼠标位置
#获取初始鼠标位置
x,y = pyautogui.position()
while True:#接受鼠标变动位置x1,y1 = pyautogui.position()#如果初始位置和变动后的位置不同,则输出最新的位置if x1 != x or y1 != y:x,y = x1,y1print(x,y)
此时控制台会一直输出鼠标的位置:
鼠标点击
左键单击
import pyautogui
import time
#先移动
pyautogui.moveTo(1299,61)
#添加等待时间以防止因为系统卡顿原因而导致漏指令
time.sleep(1)
#鼠标点击(默认左键点击)
pyautogui.click()#也可以合并上面的移动和点击语句,直接给点击方法中传参
pyautogui.click(1299,61)
我这里的位置时能够点击pycharm左侧的项目栏按钮:
执行前:
执行后:
可以看到左侧的项目栏被点击收起了
点击次数
click方法中除了可以传位置参数,还可以传点击次数(clicks)的参数,位于位置参数后。
#双击
pyautogui.click(1299,61,2)
多次有时间间隔的点击
要实现多次有时间间隔的点击,则需要在点击次数参数后,再添加点击间隔(interval)参数
#在(1299,61)位置,点击两下,每次点击间隔1秒
pyautogui.click(1299,61,2,1)
右键/中键点击
要实现右键或中键点击,则需要在点击间隔参数后再添加按键(button)参数
#在(1299,61)位置,右键点击两下,每次点击间隔1秒
pyautogui.click(1299,61,2,1,'right')
#中键为middle
移动时间
在button参数后添加移动时间(duration)参数即可
pyautogui.click(1299,61,2,1,'right',1)
总结
click()方法共有六个参数:
-
位置1 x=坐标值
-
位置2 y=坐标值
-
位置3 clicks=点击次数
-
位置4 interval=点击间隔时间
-
位置5 button=右键right,中键middle
-
位置6 duration=鼠标移动时间
-
如果需要直接使用后面的参数也可以直接在括号内输入对应的方法加=号
-
pyautogui.click(button='left')
鼠标的按下、抬起
#方法1
pyautogui.moveTo(1410,461,1)
#鼠标按下(默认为左键)
pyautogui.mouseDown()
pyautogui.moveTo(1678,679,1)
#鼠标抬起
pyautogui.mouseUp()#方法2
执行前:
执行后:
也可在位置参数后添加按键参数:
如果在按下中添加了右键或中键为参数,那么在抬起时也要添加该参数,否则抬起时依然会默认抬起左键
pyautogui.mouseDown(1410,461,'right')
pyautogui.mouseUp(button='right')
鼠标滑轮滑动
正数向上滑动,负数向下滑动
pyautogui.scroll(200)
键盘相关操作
键盘输入
pyautogui.write('12345abc')
注意:该语句不支持直接输出中文 虽然可以切换成中文输入法,按照拼音顺序来执行,但是比较鸡肋,更好的方法可以参考下一节的中文输入。
如果需要间隔一段时间再输入可以在后面加上间隔时间参数:
pyautogui.write('12345abc',0.2)
中文输入
PyAutoGUI 本身不支持直接输入中文,但可以通过调用 pyperclip 模块将需要输入的中文复制到剪贴板中,然后使用 pyautogui 模拟 Ctrl+V 粘贴操作来实现。
首先需要在终端输入下面的命令来安装第三方库
pip install pyperclip
之后导入包即可使用
import pyperclip
a1 = "我要输入中文"
pyperclip.copy(a1)
pyautogui.hotkey('ctrl','v')#也可以用数组来随机输出数组内的中文
import pyperclip
import random
a1 = ["我要输入中文","我要输入英文","我要输入日文"]
a2 = random.randint(0,2)
pyperclip.copy(a1[a2])
pyautogui.hotkey('ctrl','v')
按键输入
如果要输入回车、删除,则需要按键输入
#按下回车
pyautogui.press('enter')
#按下f5
pyautogui.press('f5')
如果需要多次输入按键或是要间隔时间输入,就需要在后面添加上对应的参数。
#按下两次enter,每次间隔1秒
#参数:(keys,presses,interval)
pyautogui.press('enter',2,1)
组合按键
可以输入快捷键组合
#输入ctrl+v黏贴
pyautogui.hotkey('ctrl','v')
按键的按住和抬起
#输入一个大写S和小写s
pyautogui.keyDown('shift')
pyautogui.press('s')
pyautogui.keyUp('shift')
pyautogui.press('s')
截取屏幕图像
首先安装第三方库Pillow
pip install pillow
获取并保存截图
#第一个参数:保存的位置(默认为当前项目的目录下)
pyautogui.screenshot('1.png')
#上面这个是全屏截取
#下面为范围截取,括号内前两个参数为起始的x轴和y轴,后两个为结束的x轴和y轴
pyautogui.screenshot('2.png',(1410,461,1510,561))
执行前:
执行后:
消息框和输入框
- 消息框
#参数:(内容,标题,按钮文字)
pyautogui.alert('hello','提示','ok')
#如果不改变按钮文字,则会调用windows原生的样式
pyautogui.alert('hello','提示')
- 输入框
#参数(内容,标题,默认输入值)
a1 = pyautogui.prompt('显示内容','标题','请在此处输入内容')
print(a1)
输入123123:
消息框还可用于代码的暂停功能,在用户没有点击确定之前,后续的代码不会执行。
THE END
如有遗漏,欢迎补充,感谢!
相关文章:

[Python] Python自动化:PyAutoGUI的基本操作
初次学习,如有错误还请指正 目录 PyAutoGUI介绍 PyAutoGUI安装 鼠标相关操作 鼠标移动 鼠标偏移 获取屏幕分辨率 获取鼠标位置 案例:实时获取鼠标位置 鼠标点击 左键单击 点击次数 多次有时间间隔的点击 右键/中键点击 移动时间 总结 鼠…...
课程介绍:《ReactNative基础与实战指南2025》
学习如何使用 ReactJS 构建适用于 iOS 和 Android 的 React Native 移动应用,无需 ReactJS 经验。无需掌握 Swift、Objective-C 或 Java/Android,也能开发跨平台(iOS 和 Android)移动应用。 全面掌握 React Native 的核心与进阶内…...
“候选对话链”(Candidate Dialogue Chain)概念
目录 一、定义与形式 二、生成过程详解 1. 语言模型生成(LLM-Based Generation) 2. 知识图谱支持(KG-Augmented Generation) 3. 策略调控(Policy-Driven Planning) 三、候选对话链的属性 四、候选对…...

应急响应靶机-web2-知攻善防实验室
题目: 前景需要:小李在某单位驻场值守,深夜12点,甲方已经回家了,小李刚偷偷摸鱼后,发现安全设备有告警,于是立刻停掉了机器开始排查。 这是他的服务器系统,请你找出以下内容&#…...

comfyui利用 SkyReels-V2直接生成长视频本地部署问题总结 1
在通过桌面版comfyUI 安装ComfyUI-WanVideoWrapper 进行SkyReels-V2 生成长视频的过程中,出现了,很多错误。 总结一下,让大家少走点弯路 下面是基于搜索结果的 ComfyUI 本地部署 SkyReels-V2 实现长视频生成的完整指南,涵盖环境配…...
UV 包管理工具:替代 pip 的现代化解决方案
安装 方法一:使用安装脚本 # macOS 和 Linux curl -LsSf https://astral.sh/uv/install.sh | sh# Windows PowerShell powershell -c "irm https://astral.sh/uv/install.ps1 | iex" 方法二:使用包管理器 # macOS (Homebrew) brew install uv#…...
css3 新增属性/滤镜效果/裁剪元素/图片适应盒子/定义和使用变量/恢复默认initial
从 CSS3 发布至今,CSS 标准引入了大量新特性,极大地丰富了前端开发的能力。以下是 CSS3 之后的重要新增属性、模块与特性总结,涵盖布局、动画、交互、视觉、选择器、单位等多个领域。 🎨 视觉与效果增强 属性/功能作用示例filte…...

YOLOv8 实战指南:如何实现视频区域内的目标统计与计数
文章目录 YOLOv8改进 | 进阶实战篇:利用YOLOv8进行视频划定区域目标统计计数1. 引言2. YOLOv8基础回顾2.1 YOLOv8架构概述2.2 YOLOv8的安装与基本使用 3. 视频划定区域目标统计的实现3.1 核心思路3.2 完整实现代码 4. 代码深度解析4.1 关键组件分析4.2 性能优化技巧…...

matlab实现VMD去噪、SVD去噪,源代码详解
为了更好的利用MATLAB自带的vmd、svd函数,本期作者将详细讲解一下MATLAB自带的这两个分解函数如何使用,以及如何画漂亮的模态分解图。 VMD函数用法详解 首先给出官方vmd函数的调用格式。 [imf,residual,info] vmd(x) 函数的输入: 这里的x是待…...

SQLite软件架构与实现源代码浅析
概述 SQLite 是一个用 C 语言编写的库,它成功打造出了一款小型、快速、独立、具备高可靠性且功能完备的 SQL 数据库引擎。本文档将为您简要介绍其架构、关键组件及其协同运作模式。 SQLite 显著特点之一是无服务器架构。不同于常规数据库,它并非以单独进…...

JAVA实战开源项目:精简博客系统 (Vue+SpringBoot) 附源码
本文项目编号 T 215 ,文末自助获取源码 \color{red}{T215,文末自助获取源码} T215,文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…...
Flink SQL 编程详解:从入门到实战难题与解决方案
Flink SQL 编程详解:从入门到实战难题与解决方案 Apache Flink 是当前流批一体实时计算的主流框架之一,而 Flink SQL 则为开发者提供了用 SQL 语言处理流式和批量数据的能力。本文将全面介绍 Flink SQL 的基础概念、编程流程、典型应用场景、常见难题及…...
GO+RabbitMQ+Gin+Gorm+docker 部署 demo
更多个人笔记见: github个人笔记仓库 gitee 个人笔记仓库 个人学习,学习过程中还会不断补充~ (后续会更新在github和 gitee上) 文章目录 目录准备运行测试postman检查容器 链接:项目连接,完整项目代码仓库下…...

通过openpyxl在excel中插入散点图
实现代码 # -*- coding: utf-8 -*- """ Created on Sat May 31 23:30:12 2025author: anyone """from openpyxl import load_workbook from openpyxl.chart import ScatterChart, Reference, Series from openpyxl.chart.series import SeriesL…...

基于cornerstone3D的dicom影像浏览器 第二十五章 自定义VR调窗工具
文章目录 前言一、三维调窗原理二、自定义三维调窗工具三、调用流程1. 修改mprvr.js2. 修改DispalyerArea3D.vue3. view3d.vue4. Toolbar3D.vue 总结 前言 从cornerstoneTools BaseTool派生VolumeShiftColorTool,实现鼠标键按下并移动时,对3D窗口的pres…...
针对 Harmony-Cordova 性能优化,涵盖原生插件开发、线程管理和资源加载等关键场景
1. 原生图片处理插件(Java) package com.example.plugin; import ohos.media.image.ImageSource; import ohos.media.image.PixelMap; import ohos.app.Context; public class ImageProcessor { private final Context context; public ImagePro…...
【SCI论文实现】信息引导的高质量三维重建——系统架构设计 PYTHON
一、多模态数据采集与预处理模块 设计目标:解决动态场景中多源数据的时空对齐与质量优化问题,为后续特征提取提供高精度、强一致性的输入。 1.1 传感器配置逻辑 选择 RGB-D 相机(如 Kinect)与 LiDAR(如 Velodyne VLP-16)的互补组合,原因在于: RGB-D 相机提供高分辨率…...

经典面试题:一文了解常见的缓存问题
在面试过程中,面试官的桌子上摆放着很多高频的面试题,能否顺利回答决定了你面试通过的概率。其中缓存问题就是其中的一份,可以说掌握缓存问题及解决方法是面试前必须准备的内容。那么缓存有什么典型的问题,出现的原因是什么&#…...
Vue3处理number输入框避免NaN
在 Vue3 中处理 number 类型输入框避免显示 NaN,核心在于正确处理用户输入的非数字值。以下是几种解决方案: 方案1:使用字符串中转 计算属性(推荐) vue 复制 下载 <template><input v-model"input…...

GC1267F:单相全波风扇电机预驱动芯片解析
在现代电子设备中,风扇电机的驱动控制是散热系统的关键组成部分。GC1267F 是一款由浙江新麦科技有限公司生产的单相全波风扇电机预驱动芯片,适用于需要大风量和大电流的服务器以及消费类电器风扇电机驱动。 芯片特性 GC1267F 支持外部 PWM 信号的变速功…...

Linux --进程状态
目录 进程状态(宏观) Linux进程状态 进程状态的查看 进程状态(宏观) 为了了解Linux的进程状态,首先我们得了解进程状态,因为不仅仅是在Linux下有进程状态,macos和windows下都有进程状态,这里先解释的是一个宏观概念下的ÿ…...
如何设计一个支持线上线下的通用订单模块 —— 面向本地生活服务行业的架构思路
一、背景与目标 在本地生活服务行业中,订单模块作为连接用户、商户、商品、支付、履约的核心组件,支撑着平台内多样化的业务形态,例如外卖配送、到店服务、团购核销、即时零售、预约预订、线下消费等。 设计一个可支持线上线下融合的通用订…...

智能手机上用Termux安装php+Nginx
Termux的官方网站:Termux | The main termux site and help pages. 以下是在 Termux 上安装和配置 PHP Nginx 的完整流程总结,包含关键步骤和命令: 一、安装依赖 pkg update && pkg upgrade # 更新包列表和系统pkg install nginx p…...
【线上故障排查】缓存穿透攻击的识别与布隆过滤器(面试题 + 3 步追问应对 + 案例分析)
一、高频面试题 问题1:什么是缓存穿透?它对系统的核心危害是什么? 参考答案:缓存穿透指的是用户请求的数据在缓存和数据库中都不存在,导致请求直接绕过缓存打到数据库。核心危害是大量无效请求会耗尽数据库资源,比如CPU、内存或连接数,严重时可能引发数据库宕机,进而导…...

Visual Studio 调试中 PDB 与图像不匹配
Visual Studio 调试中 PDB 与图像不匹配 在使用 Visual Studio 进行本地或远程调试时,很多开发者会遇到 PDB 加载失败、符号不匹配的问题,甚至程序进程未退出,导致 .exe 文件无法成功覆盖。本文详细解析了从后台进程清理、构建产物验证、模块…...

设计模式——策略设计模式(行为型)
摘要 策略设计模式是一种行为型设计模式,它定义了一系列算法并将每个算法封装起来,使它们可以相互替换。该模式让算法的变化独立于使用算法的客户,从而使得算法可以灵活地切换和扩展。其主要角色包括策略接口、具体策略类和环境类。策略模式…...

保持本地 Git 项目副本与远程仓库完全同步
核心目标: 保持本地 Git 项目副本与 GitHub 远程仓库完全同步。 关键方法: 定期执行 git pull 命令。 操作步骤: 进入项目目录: 在终端/命令行中,使用 cd 命令切换到你的项目文件夹。执行拉取命令: 运行…...
高效Excel数据净化工具:一键清除不可见字符与格式残留
摘要 本文将分享一款基于Python的Excel数据净化工具,用于自动清除给定的Excel文档中指定工作表中的不可见字符、批注、单元格样式等冗余数据。脚本支持进度可视化展示,保留核心数据处理逻辑的同时确保文件格式规整,特别适用于需要规范数据格…...

设计模式——模版方法设计模式(行为型)
摘要 模版方法设计模式是一种行为型设计模式,定义了算法的步骤顺序和整体结构,将某些步骤的具体实现延迟到子类中。它通过抽象类定义模板方法,子类实现抽象步骤,实现代码复用和算法流程控制。该模式适用于有固定流程但部分步骤可…...

Deepin 20.9社区版安装Docker
个人博客地址:Deepin 20.9社区版安装Docker | 一张假钞的真实世界 注意事项 Deepin 20.9 社区版安装 Docker 需要注意两点: 因为某些原因,Docker 官方源基本不可用,所以需要使用镜像源进行安装。当然也可以用安装包直接安装&am…...