当前位置: 首页 > news >正文

PyAutoGUI 使用详解

文章目录

    • 简介
    • PyAutoGUI 的原理
    • 安装 PyAutoGUI
    • 基本使用示例
      • 鼠标控制
      • 键盘控制
      • 截屏
      • 图像识别
      • 消息框
    • 高级功能
      • 防止误操作
      • 多屏幕支持
      • 鼠标平滑移动
    • 结论

简介

PyAutoGUI 是一个用于自动化控制鼠标和键盘的 Python 库。它可以帮助开发者编写脚本,以模拟用户在计算机上的操作,适用于自动化任务、测试和游戏辅助等场景。

官网链接:PyAutoGUI Documentation

PyAutoGUI 的原理

PyAutoGUI 的工作原理是通过操作系统提供的 API 来模拟用户的鼠标和键盘输入。它支持跨平台操作,包括 Windows、macOS 和 Linux。PyAutoGUI 提供了许多方便的函数,可以用来移动鼠标、点击、拖拽、键盘输入、截屏等。

安装 PyAutoGUI

使用 pip 可以轻松安装 PyAutoGUI:

pip install pyautogui

此外,某些功能(如截屏和图像识别)需要额外的依赖库,可以通过以下命令安装:

pip install pillow opencv-python

基本使用示例

以下是一些常见的 PyAutoGUI 用法示例:

鼠标控制

import pyautogui# 移动鼠标到屏幕坐标 (100, 200)
pyautogui.moveTo(100, 200)# 从当前位置移动鼠标,相对移动 (x, y)
pyautogui.moveRel(50, 50)# 点击鼠标左键
pyautogui.click()# 双击鼠标左键
pyautogui.doubleClick()# 右键点击
pyautogui.rightClick()# 拖拽鼠标
pyautogui.dragTo(300, 400, duration=2)  # 拖动到 (300, 400) 位置,持续2秒

键盘控制

# 输入文本
pyautogui.write('Hello, World!')# 按下并释放按键
pyautogui.press('enter')# 组合按键
pyautogui.hotkey('ctrl', 'c')  # 模拟 Ctrl+C 组合键

截屏

# 截取整个屏幕
screenshot = pyautogui.screenshot()
screenshot.save('screenshot.png')# 截取特定区域
region_screenshot = pyautogui.screenshot(region=(0, 0, 300, 400))
region_screenshot.save('region_screenshot.png')

图像识别

# 查找屏幕上的图像
location = pyautogui.locateOnScreen('button.png')
if location:pyautogui.click(location)

消息框

# 显示消息框
pyautogui.alert('This is an alert box.')# 输入框
user_input = pyautogui.prompt('Enter your name:')
print(f'User entered: {user_input}')

高级功能

防止误操作

为了防止脚本失控,PyAutoGUI 提供了一些安全功能:

  • failsafe:默认情况下,如果鼠标移动到屏幕左上角,PyAutoGUI 操作会立即停止。
  • pause:在每个 PyAutoGUI 函数调用后自动暂停一段时间,默认值为 0.1 秒。
pyautogui.FAILSAFE = True
pyautogui.PAUSE = 1  # 每个操作后暂停 1 秒

多屏幕支持

PyAutoGUI 支持多屏幕,可以获取所有屏幕的尺寸:

screens = pyautogui.screenshot().size()
print(screens)

鼠标平滑移动

使用 moveTomoveRel 函数的 duration 参数,可以让鼠标平滑移动到目标位置:

pyautogui.moveTo(500, 500, duration=2)  # 在2秒内平滑移动到 (500, 500)

结论

PyAutoGUI 是一个强大且易于使用的库,适用于各种自动化任务。无论是简单的鼠标和键盘操作,还是复杂的图像识别和脚本编写,PyAutoGUI 都能提供灵活的解决方案。通过学习和掌握 PyAutoGUI,可以大大提高工作效率和自动化程度。

更多详细信息和高级用法,请参阅 PyAutoGUI 官方文档。

相关文章:

PyAutoGUI 使用详解

文章目录 简介PyAutoGUI 的原理安装 PyAutoGUI基本使用示例鼠标控制键盘控制截屏图像识别消息框 高级功能防止误操作多屏幕支持鼠标平滑移动 结论 简介 PyAutoGUI 是一个用于自动化控制鼠标和键盘的 Python 库。它可以帮助开发者编写脚本,以模拟用户在计算机上的操…...

MySQL——备份

为什么要备份? 保证重要的数据不丢失 方便数据转移 MySQL数据库备份方式: 1. 直接拷贝物理文件 2. 在可视化工具中手动导出 —— 在想要导出的表或者库中,右键选择备份或导出 3. 使用命令行导出 mysqldump ——cmd打开命令行 —…...

科东软件精彩亮相华南工博会,展现未来工业前沿技术

近日,华南国际工业博览会在深圳成功举办。科东软件携众多前沿技术、解决方案及最新应用案例精彩亮相,为参展观众带来了一场工业智能的科技盛宴。 鸿道操作系统(Intewell) 科东软件重点展示了鸿道操作系统(Intewell&…...

详解flink sql, calcite logical转flink logical

文章目录 背景示例FlinkLogicalCalcConverterBatchPhysicalCalcRuleStreamPhysicalCalcRule其它算子FlinkLogicalAggregateFlinkLogicalCorrelateFlinkLogicalDataStreamTableScanFlinkLogicalDistributionFlinkLogicalExpandFlinkLogicalIntermediateTableScanFlinkLogicalInt…...

PostgreSQL的系统视图pg_statio_all_indexes

PostgreSQL的系统视图pg_statio_all_indexes 在 PostgreSQL 数据库中,pg_statio_all_indexes 视图提供了有关所有索引的 I/O 活动的统计信息。这些统计信息对于了解索引的使用情况和性能调优非常有帮助。 pg_statio_all_indexes 视图的结构 以下是 pg_statio_all…...

【C++ Primer Plus学习记录】函数和C-风格字符串

将字符串作为参数时意味着传递的是地址,但可以使用const来禁止对字符串参数进行修改。 假设要将字符串作为参数传递给函数,则表示字符串的方式有三种: (1)char数组 (2)用引号括起来的字符串常…...

力扣双指针算法题目:移动零

1.题目 . - 力扣&#xff08;LeetCode&#xff09; 2.思路解析 这个题目的思路和“使用递归排序快速排序解决数组的排序问题”相同 class solution { public:void QuickSort(vector<int>& nums, int left, int right){if (left > right) return;int key left…...

day60---面试专题(微服务面试题-参考回答)

微服务面试题 **面试官&#xff1a;**Spring Cloud 5大组件有哪些&#xff1f; 候选人&#xff1a; 早期我们一般认为的Spring Cloud五大组件是 Eureka : 注册中心Ribbon : 负载均衡Feign : 远程调用Hystrix : 服务熔断Zuul/Gateway : 网关 随着SpringCloudAlibba在国内兴起 , …...

laravel+phpoffice+easyexcel实现导入

资源包下载地址 https://download.csdn.net/download/QiZong__BK/89503486 easy-excel下载&#xff1a; "dcat/easy-excel": "^1.0", 命令行&#xff1a; composer require dcat/easy-excel 前端代码 <!doctype html> <html lang"en&…...

Spring Boot集成多数据源的最佳实践

Spring Boot集成多数据源的最佳实践 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 为什么需要多数据源&#xff1f; 在实际的应用开发中&#xff0c;有时候…...

Java项目:基于SSM框架实现的班主任助理管理系统【ssm+B/S架构+源码+数据库+开题报告+毕业论文】

一、项目简介 本项目是一套基于SSM框架实现的班主任助理管理系统 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff0c;eclipse或者idea 确保可以运行&#xff01; 该系统功能完善、界面美观、操作简单、功…...

数据在内存中的存储方式

&#x1f31f;&#x1f31f;作者主页&#xff1a;ephemerals__ &#x1f31f;&#x1f31f;所属专栏&#xff1a;C语言 目录 前言 一、整数的存储 二、大小端字节序及其判断 1.什么是大小端 2.为什么有大小端 3.用c语言编写程序判断大小端 三、浮点数的存储 1.浮点数…...

Selenium 监视数据收发

实际上&#xff0c;在我提供的示例中&#xff0c;确实使用了浏览器实例。webdriver.Chrome()这行代码正是创建了一个Chrome浏览器的WebDriver实例。Selenium Wire扩展了标准的Selenium WebDriver&#xff0c;允许你通过这个浏览器实例来监听网络请求。 当你运行类似这样的代码…...

基于 STM32 的智能睡眠呼吸监测系统设计

本设计的硬件构成&#xff1a; STM32F103C8T6单片机最小系统板&#xff08;包含3.3V稳压电路时钟晶振电路复位电路&#xff08;上电自复位&#xff0c;手动复位&#xff09;&#xff09;&#xff0c;心率传感器、气压传感器、液晶显示、按键、蜂鸣器、LED灯、蓝牙模块组合而成…...

Spring的事务管理、AOP实现底层

目录 spring的事务管理是如何实现的&#xff1f; Spring的AOP的底层实现原理 spring的事务管理是如何实现的&#xff1f; 首先&#xff0c;spring的事务是由aop来实现的&#xff0c;首先要生成具体的代理对象&#xff0c;然后按照aop的整套流程来执行具体的操作逻辑&#xff…...

基于SpringBoot的篮球竞赛预约平台

你好&#xff0c;我是计算机学姐码农小野&#xff01;如果你对篮球竞赛预约平台感兴趣或有相关需求&#xff0c;欢迎私信联系我。 开发语言&#xff1a; Java 数据库&#xff1a; MySQL 技术&#xff1a; SpringBootMySql 工具&#xff1a; MyEclipse、Tomcat 系统展示…...

学生用小台灯什么牌子的好?列举出几款学生用台灯推荐

眼睛是我们感知世界的窗口&#xff0c;但近年来&#xff0c;儿童青少年的视力健康却受到了严重困扰。数据显示&#xff0c;近视问题在儿童群体中呈现出明显的增长趋势&#xff0c;这给他们的学习和生活带来了诸多不便。虽然现代科技的快速发展使得电子产品成为了我们生活中不可…...

软件测试面试题:项目中的MQ是如何测试的?

通常&#xff0c;咱们会从两个方面来考虑&#xff1a;正常情况和异常情况。 首先&#xff0c;咱们得确保消息队列在正常工作时结果正确。比如&#xff0c;消息发送出去的时候&#xff0c;所有的字段都得齐全&#xff0c;接收方收到的消息也得一样。咱们得确保系统能够正确无误…...

Python爬取国家医保平台公开数据

国家医保服务平台数据爬取python爬虫数据爬取医疗公开数据 定点医疗机构查询定点零售药店查询医保机构查询药品分类与代码查询 等等&#xff0c;数据都能爬 接口地址&#xff1a;/ebus/fuwu/api/nthl/api/CommQuery/queryFixedHospital 签名参数&#xff1a;signData {dat…...

B站大课堂-自动化精品视频(个人存档)

基础知识 工业通信协议 Modbus 施耐德研发&#xff0c;有基于以太网的 ModbusTCP 协议和使用 485/232 串口通信的 ModbusRTU/ASCII。 Modbus 协议面世较早、协议简洁高效、商用免费、功能灵活、实现简单&#xff0c;是目前应用最广泛的现场总线协议。 我的笔记里边有一些推荐…...

Linux 文件类型,目录与路径,文件与目录管理

文件类型 后面的字符表示文件类型标志 普通文件&#xff1a;-&#xff08;纯文本文件&#xff0c;二进制文件&#xff0c;数据格式文件&#xff09; 如文本文件、图片、程序文件等。 目录文件&#xff1a;d&#xff08;directory&#xff09; 用来存放其他文件或子目录。 设备…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别

一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件

今天呢&#xff0c;博主的学习进度也是步入了Java Mybatis 框架&#xff0c;目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学&#xff0c;希望能对大家有所帮助&#xff0c;也特别欢迎大家指点不足之处&#xff0c;小生很乐意接受正确的建议&…...

React19源码系列之 事件插件系统

事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...

生成 Git SSH 证书

&#x1f511; 1. ​​生成 SSH 密钥对​​ 在终端&#xff08;Windows 使用 Git Bash&#xff0c;Mac/Linux 使用 Terminal&#xff09;执行命令&#xff1a; ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" ​​参数说明​​&#xff1a; -t rsa&#x…...

大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计

随着大语言模型&#xff08;LLM&#xff09;参数规模的增长&#xff0c;推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长&#xff0c;而KV缓存的内存消耗可能高达数十GB&#xff08;例如Llama2-7B处理100K token时需50GB内存&a…...

Java求职者面试指南:计算机基础与源码原理深度解析

Java求职者面试指南&#xff1a;计算机基础与源码原理深度解析 第一轮提问&#xff1a;基础概念问题 1. 请解释什么是进程和线程的区别&#xff1f; 面试官&#xff1a;进程是程序的一次执行过程&#xff0c;是系统进行资源分配和调度的基本单位&#xff1b;而线程是进程中的…...

【SpringBoot自动化部署】

SpringBoot自动化部署方法 使用Jenkins进行持续集成与部署 Jenkins是最常用的自动化部署工具之一&#xff0c;能够实现代码拉取、构建、测试和部署的全流程自动化。 配置Jenkins任务时&#xff0c;需要添加Git仓库地址和凭证&#xff0c;设置构建触发器&#xff08;如GitHub…...

第八部分:阶段项目 6:构建 React 前端应用

现在&#xff0c;是时候将你学到的 React 基础知识付诸实践&#xff0c;构建一个简单的前端应用来模拟与后端 API 的交互了。在这个阶段&#xff0c;你可以先使用模拟数据&#xff0c;或者如果你的后端 API&#xff08;阶段项目 5&#xff09;已经搭建好&#xff0c;可以直接连…...

Axure零基础跟我学:展开与收回

亲爱的小伙伴,如有帮助请订阅专栏!跟着老师每课一练,系统学习Axure交互设计课程! Axure产品经理精品视频课https://edu.csdn.net/course/detail/40420 课程主题:Axure菜单展开与收回 课程视频:...