pyautogui 第一章:鼠标全功能操作(核心1)

news2026/4/29 19:25:06
PyAutoGUI 鼠标全功能操作教程核心1说明本教程为 PyAutoGUI 核心操作专项教程聚焦鼠标全功能操作包含详细参数说明、实操代码、注意事项适配新手入门可直接复制代码调试运行。所有操作均基于 PyAutoGUI 基础环境已安装完成若未安装可参考基础教程完成环境配置。1.1 鼠标坐标基础鼠标操作的核心前提是掌握屏幕坐标规则PyAutoGUI 采用“屏幕左上角为原点”的坐标系以下3个基础操作是所有鼠标操作的基础必须熟练掌握。1. 获取屏幕宽高pyautogui.size()作用获取当前屏幕的宽度和高度返回一个元组 (width, height)用于定位鼠标操作的范围避免操作超出屏幕边界。语法pyautogui.size()示例代码importpyautogui# 获取屏幕宽高screen_width,screen_heightpyautogui.size()# 打印结果方便后续定位鼠标位置print(f当前屏幕分辨率宽度{screen_width}px高度{screen_height}px)# 输出示例当前屏幕分辨率宽度1920px高度1080px2. 获取当前鼠标位置pyautogui.position()作用获取鼠标当前所在位置的坐标 (x, y)常用于精准定位桌面图标、软件按钮等目标位置比如获取“记事本”图标坐标用于后续点击操作。语法pyautogui.position()示例代码importpyautogui# 获取鼠标当前坐标x,ypyautogui.position()print(f鼠标当前坐标X{x}Y{y})# 输出示例鼠标当前坐标X500Y3003. 实时坐标监控脚本实操必备实用场景需要精准获取某个目标如软件按钮、输入框的坐标时运行该脚本移动鼠标到目标位置即可实时显示坐标按 CtrlC 终止脚本。完整脚本importpyautoguiimporttime# 设置操作延迟避免脚本运行过快pyautogui.PAUSE0.1print(正在实时监控鼠标坐标按 CtrlC 终止监控...)try:whileTrue:# 实时获取鼠标坐标x,ypyautogui.position()# 格式化输出覆盖当前行不换行避免终端刷屏print(f当前鼠标坐标X{x:4d}Y{y:4d},endr)# 每隔0.1秒刷新一次坐标time.sleep(0.1)exceptKeyboardInterrupt:# 捕获 CtrlC 终止信号友好提示print(n坐标监控已终止)注意运行脚本后移动鼠标到目标位置停留1-2秒终端会显示该位置的精准坐标复制坐标即可用于后续鼠标操作。1.2 鼠标移动PyAutoGUI 提供两种鼠标移动方式绝对移动指定坐标和相对移动相对于当前位置可根据需求选择同时支持平滑移动动画提升操作自然度。1. 绝对移动pyautogui.moveTo(x, y, duration)作用将鼠标从当前位置移动到指定的 (x, y) 坐标绝对坐标基于屏幕左上角原点。参数说明x目标位置的 X 坐标必传y目标位置的 Y 坐标必传duration可选参数移动所需时间单位秒不设置则瞬间移动设置后实现平滑移动。示例代码importpyautoguiimporttime# 基础配置所有脚本开头建议添加提升稳定性pyautogui.PAUSE1# 每步操作间隔1秒pyautogui.FAILSAFETrue# 开启故障保护鼠标移到左上角终止脚本# 1. 瞬间移动到坐标 (500, 300)pyautogui.moveTo(500,300)time.sleep(1)# 暂停1秒观察效果# 2. 平滑移动到屏幕中心duration1.5秒移动更自然screen_width,screen_heightpyautogui.size()center_xscreen_width/2center_yscreen_height/2pyautogui.moveTo(center_x,center_y,duration1.5)2. 相对移动pyautogui.moveRel(xOffset, yOffset, duration)作用以鼠标当前位置为基准向 X 轴、Y 轴方向移动指定距离相对坐标不依赖绝对位置。参数说明xOffsetX 轴方向移动距离正数向右负数向左yOffsetY 轴方向移动距离正数向下负数向上duration可选参数移动所需时间单位秒。示例代码importpyautoguiimporttime pyautogui.PAUSE1pyautogui.FAILSAFETrue# 1. 先移动到屏幕中心作为基准位置screen_width,screen_heightpyautogui.size()pyautogui.moveTo(screen_width/2,screen_height/2,duration1)# 2. 相对移动向右移动200px向下移动100pxduration1秒pyautogui.moveRel(200,100,duration1)time.sleep(1)# 3. 相对移动向左移动100px向上移动50pxduration0.8秒pyautogui.moveRel(-100,-50,duration0.8)3. 移动缓动动画 Tween/Easing 平滑移动效果作用默认的平滑移动是匀速的通过 Tween/Easing 效果可以实现“先慢后快”“先快后慢”等更自然的移动动画贴合人类操作习惯。核心方法pyautogui.moveTo()/moveRel() 结合 pyautogui.tween 模块需先导入 tween 模块。常用缓动效果及示例代码importpyautoguiimportpyautogui.tweenastween# 导入缓动模块importtime pyautogui.PAUSE1pyautogui.FAILSAFETrue# 常用缓动效果任选其一即可# 1. 先慢后快easeInQuadprint(缓动效果先慢后快)pyautogui.moveTo(800,400,duration2,tweentween.easeInQuad)time.sleep(1)# 2. 先快后慢easeOutQuad最常用最自然print(缓动效果先快后慢)pyautogui.moveTo(200,400,duration2,tweentween.easeOutQuad)time.sleep(1)# 3. 先慢中间快后慢easeInOutQuadprint(缓动效果先慢中间快后慢)pyautogui.moveTo(500,600,duration2,tweentween.easeInOutQuad)注意缓动效果仅在设置 duration移动时间后生效不设置 duration 则无动画效果。1.3 鼠标拖拽拖拽操作是“按下鼠标按键 → 移动鼠标 → 松开按键”的组合操作PyAutoGUI 提供绝对拖拽和相对拖拽两种方式可设置拖拽时长和拖拽按键左键、右键、中键。1. 绝对拖拽pyautogui.dragTo(x, y, duration, button)作用按下指定鼠标按键将鼠标从当前位置拖拽到指定 (x, y) 坐标然后松开按键。参数说明x、y目标拖拽坐标必传duration可选拖拽所需时间单位秒button可选拖拽时按下的按键默认左键可选 left/right/middle。示例代码模拟拖拽文件/窗口importpyautoguiimporttime pyautogui.PAUSE1pyautogui.FAILSAFETrue# 1. 先移动到目标位置假设是桌面文件坐标 (100, 200)pyautogui.moveTo(100,200,duration1)# 2. 绝对拖拽按下左键拖拽到 (500, 300) 位置拖拽时长1.5秒pyautogui.dragTo(500,300,duration1.5,buttonleft)# 3. 示例右键拖拽可选time.sleep(1)pyautogui.moveTo(500,300,duration1)pyautogui.dragTo(700,400,duration1,buttonright)2. 相对拖拽pyautogui.dragRel(xOffset, yOffset, duration, button)作用以鼠标当前位置为基准按下指定按键向 X、Y 轴方向拖拽指定距离然后松开按键。参数说明xOffset、yOffset相对拖拽距离正数向右/向下负数向左/向上duration可选拖拽时长button可选拖拽按键默认左键。示例代码模拟拖拽选中文字importpyautoguiimporttime pyautogui.PAUSE1pyautogui.FAILSAFETrue# 1. 移动到文字起始位置假设坐标 (300, 500)pyautogui.moveTo(300,500,duration1)# 2. 相对拖拽向右拖拽300px选中文字左键拖拽时长1秒pyautogui.dragRel(300,0,duration1,buttonleft)# 3. 补充拖拽后松开按键默认自动松开若异常可手动松开pyautogui.mouseUp(buttonleft)3. 拖拽时长、拖拽按键设置补充拖拽时长duration 建议设置 0.5-2 秒时长过短会导致拖拽不生效系统反应不过来新手建议设置 1 秒拖拽按键默认左键buttonleft右键拖拽适用于特殊场景如文件右键拖拽菜单中键拖拽多用于浏览器滚动、软件面板拖拽异常处理若拖拽后按键未松开可手动添加 pyautogui.mouseUp(buttonleft) 强制松开按键。1.4 鼠标点击左键/右键/中键/双击鼠标点击是最常用的操作PyAutoGUI 提供多种点击方式涵盖单击、双击、右键单击、中键单击以及“按下不松开”“松开”的组合操作满足不同场景需求。1. 单击pyautogui.click(x, y, clicks, interval, button)作用在指定坐标或当前鼠标位置点击指定鼠标按键默认单击左键。参数说明x、y可选点击的坐标不设置则点击当前鼠标位置clicks可选点击次数默认1次设置2次即为双击可替代 doubleClick()interval可选多次点击之间的间隔时间单位秒button可选点击的按键默认 left可选 right/middle。示例代码importpyautoguiimporttime pyautogui.PAUSE1pyautogui.FAILSAFETrue# 1. 点击当前鼠标位置左键默认pyautogui.click()time.sleep(1)# 2. 点击指定坐标 (200, 300)左键单击pyautogui.click(200,300)time.sleep(1)# 3. 右键单击指定坐标 (400, 500)pyautogui.click(400,500,buttonright)time.sleep(1)# 4. 中键单击常用于浏览器刷新pyautogui.click(600,400,buttonmiddle)2. 双击、右键单击、中键单击简化方法为了简化操作PyAutoGUI 提供了专门的双击、右键单击、中键单击方法无需设置 clicks 和 button 参数更便捷。双击pyautogui.doubleClick(x, y, interval, button)默认左键双击右键单击pyautogui.rightClick(x, y)默认右键单击中键单击pyautogui.middleClick(x, y)默认中键单击。示例代码importpyautoguiimporttime pyautogui.PAUSE1pyautogui.FAILSAFETrue# 1. 双击指定坐标 (300, 300)左键双击pyautogui.doubleClick(300,300)time.sleep(1)# 2. 右键单击当前鼠标位置pyautogui.rightClick()time.sleep(1)# 3. 中键单击指定坐标 (500, 500)pyautogui.middleClick(500,500)3. 按下不松开、松开组合操作作用用于长按鼠标、组合拖拽、连续点击等场景手动控制鼠标按键的“按下”和“松开”灵活度更高。核心方法按下鼠标pyautogui.mouseDown(x, y, button)不松开按键松开鼠标pyautogui.mouseUp(x, y, button)松开之前按下的按键。示例代码长按鼠标、连续点击importpyautoguiimporttime pyautogui.PAUSE1pyautogui.FAILSAFETrue# 1. 长按鼠标左键3秒模拟长按选中、长按拖动等场景pyautogui.moveTo(200,400,duration1)pyautogui.mouseDown(buttonleft)# 按下左键不松开time.sleep(3)# 长按3秒pyautogui.mouseUp(buttonleft)# 松开左键# 2. 连续点击5次间隔0.5秒模拟快速点击场景pyautogui.moveTo(400,400,duration1)for_inrange(5):pyautogui.mouseDown(buttonleft)pyautogui.mouseUp(buttonleft)time.sleep(0.5)# 每次点击间隔0.5秒1.5 鼠标滚轮滚动PyAutoGUI 支持鼠标滚轮上下滚动和水平滚动主要用于浏览器页面、文档、软件面板的滚动操作通过设置滚动距离控制滚动幅度。1. 上下滚动pyautogui.scroll(clicks, x, y)作用在指定坐标或当前鼠标位置滚动鼠标滚轮实现页面上下滚动。参数说明clicks滚动距离正数向上滚动负数向下滚动数值越大滚动幅度越大x、y可选滚动操作的坐标不设置则在当前鼠标位置滚动。示例代码浏览器页面滚动importpyautoguiimporttime pyautogui.PAUSE1pyautogui.FAILSAFETrue# 1. 移动到浏览器页面假设坐标 (500, 500)pyautogui.moveTo(500,500,duration1)# 2. 向下滚动clicks-10幅度较大pyautogui.scroll(-10)time.sleep(1)# 3. 向上滚动clicks5幅度中等pyautogui.scroll(5)time.sleep(1)# 4. 在指定坐标 (600, 600) 向下滚动pyautogui.scroll(-8,600,600)2. 水平滚动pyautogui.hscroll(clicks, x, y)作用在指定坐标或当前鼠标位置水平滚动鼠标滚轮适用于表格、宽屏文档等需要左右滚动的场景。参数说明clicks水平滚动距离正数向右滚动负数向左滚动x、y可选水平滚动的坐标。示例代码表格水平滚动importpyautoguiimporttime pyautogui.PAUSE1pyautogui.FAILSAFETrue# 1. 移动到表格位置假设坐标 (400, 600)pyautogui.moveTo(400,600,duration1)# 2. 向右水平滚动clicks10pyautogui.hscroll(10)time.sleep(1)# 3. 向左水平滚动clicks-6pyautogui.hscroll(-6)补充说明滚动幅度clicks 的数值建议设置为 1-20数值过大可能导致滚动过度新手可先从 5-10 开始测试兼容性水平滚动hscroll()在部分软件、系统中可能不支持若无效可尝试使用鼠标拖拽替代场景适配上下滚动常用于浏览器、文档水平滚动常用于表格、图片查看器。1.6 鼠标综合实战小案例结合本章所有鼠标操作编写一个完整的实战脚本实现“定位 → 移动 → 点击 → 拖拽 → 滚轮”的完整流程模拟日常办公中的“打开文件 → 拖拽选中内容 → 滚动查看”操作。实战需求获取桌面“记事本”图标坐标假设提前获取到坐标为 (100, 200)移动鼠标到记事本图标双击打开等待记事本打开休眠3秒移动鼠标到文档区域点击激活拖拽选中一段文字相对拖拽滚动滚轮查看文档内容右键单击选中的文字弹出右键菜单。完整实战代码importpyautoguiimporttime# 基础配置提升脚本稳定性pyautogui.PAUSE1pyautogui.FAILSAFETrue# 1. 定位记事本图标坐标可通过1.1的实时坐标监控脚本获取note_x,note_y100,200# 2. 移动 → 双击打开记事本pyautogui.moveTo(note_x,note_y,duration1)# 平滑移动到图标pyautogui.doubleClick()# 双击打开记事本# 3. 等待记事本打开移动到文档区域并点击激活time.sleep(3)# 休眠3秒确保记事本完全打开pyautogui.moveTo(200,300,duration0.8)# 移动到文档区域pyautogui.click()# 点击激活输入区域# 4. 拖拽相对拖拽选中文字向右300px向下0pxpyautogui.dragRel(300,0,duration1,buttonleft)# 5. 滚轮向下滚动查看内容pyautogui.scroll(-5)time.sleep(1)pyautogui.scroll(3)# 向上滚动回到选中位置# 6. 右键单击弹出右键菜单复制、剪切等pyautogui.rightClick()print(鼠标综合操作实战完成)实操注意事项脚本中的坐标如记事本图标坐标需根据自己的屏幕分辨率通过“实时坐标监控脚本”获取否则会操作失效休眠时间time.sleep(3)可根据电脑运行速度调整确保软件完全打开运行脚本时确保桌面无遮挡记事本图标可见避免其他窗口干扰操作若操作异常可将鼠标移到屏幕左上角触发故障保护终止脚本。拓展提示本案例可根据实际需求修改比如替换为“打开浏览器 → 拖拽地址栏 → 滚动页面”“打开Excel → 拖拽选中单元格 → 滚动查看表格”等场景核心操作逻辑一致只需修改坐标和等待时间即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2554957.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…