PyAutoGUI

news2024/9/28 7:17:58

概述

PyAutoGUI是一个纯Python开发的跨平台GUI自动化工具,它是通过程序来控制计算机的键盘和鼠标的操作,从而实现自动化功能。所谓的GUI是指图形用户界面,即通过图形方式来显示计算机的界面,早期的计算机是以命令行界面来操作,其中Linux服务器版本仍在使用,而日常工作中使用的Windows、Mac和Linux桌面发行版都是以GUI来显示。PyAutoGUI一共分为三大功能:鼠标操控、键盘操控和截图识别,三者可以相互协调使用。截图识别可以为计算机提供简单的视觉功能,让PyAutoGUI在计算机上找到某个按钮或某个图标的坐标位置,然后操作鼠标或键盘来实现自动化控制。PyAutoGUI的使用范围相当广泛,只要计算机能运行的GUI程序都可以控制,正因如此,程序在执行过程中,如果人为操作鼠标和键盘都会对程序的执行造成一定的影响,也就是说,PyAutoGUI开发的自动化程序在稳定性方面是比较薄弱的。

截图与识别

PyAutoGUI有特定的方法来截取计算机的屏幕,获取屏幕快照。屏幕快照是RGB模式的图像,RGB模式是图片的色彩模式,R代表Red(红色),G代表Green(绿色),B代表Blue(蓝色),自然界中肉眼所能看到的任何色彩都可以由这三种色彩混合叠加而成。在Python里面,RGB颜色数值是一个长度为3的元组,如(62, 59, 55),62代表红色的深浅程度,59代表绿色,55代表蓝色,每种颜色的数值范围是0到255。每台计算机的屏幕分辨率都是不同的,因此屏幕快照的分辨率也不同。屏幕分辨率是屏幕上显示的像素个数,分辨率160×128的意思是水平方向含有像素数为160个,垂直方向像素数128个。屏幕尺寸一样的情况下,分辨率越高,显示效果就越精细和细腻。通俗点理解,在一张图片里面,像素数可以比喻成一个点,这个点的颜色是RGB模式,那么多个点可以组成一条线,多条线可以组成一个面,而这个面就代表这张图片
在这里插入图片描述

# 屏幕分辨率
screen = pyautogui.size()
print(screen)  # width=1920, height=1080

# 截全屏
im = pyautogui.screenshot(imageFilename='screenshot.png')

# 截取指定坐标屏幕
region = (0, 0, 800, 900)
name = 'screenshot2.png'
im = pyautogui.screenshot(region=region, imageFilename=name)

# 识别
region = (0, 0, 60, 80)
name = 'screenshot3.png'
im = pyautogui.screenshot(region=region, imageFilename=name)
location = pyautogui.locateOnScreen(image='screenshot3.png')
print(location)  # Box(left=0, top=0, width=60, height=80)

# 获取目标图像的中心坐标位置
location = pyautogui.locateCenterOnScreen(image='screenshot3.png')
print(location)

鼠标控制功能

# 移动鼠标
pyautogui.moveTo(0, 10, duration=3)

# 当前鼠标位置向X坐标偏移100,Y坐标偏移80

mouse = pyautogui.position()
print(mouse)

pyautogui.moveRel(xOffset=100, yOffset=80, duration=3)

# 获取鼠标位置
time.sleep(2)
mouse = pyautogui.position()
print(mouse)

# 拖拽
# dragTo()是根据当前鼠标的位置拖动到某个坐标位置
pyautogui.moveTo(1488, 434, duration=3)
pyautogui.dragTo(942, 245, duration=3)

# dragRel()是根据当前鼠标的位置拖动到某个偏移位置
pyautogui.moveTo(1633, 548)
pyautogui.dragRel(-100, 20, duration=3)

# 点击
pyautogui.click(1553, 533, clicks=2, interval=0.25, button='left')  # 左击2次,每次点击间隔0.25s

# 滚动
pyautogui.moveTo(1005, 694)
pyautogui.scroll(clicks=-1000)  # clicks为正向上,负值向下

# 长按右键
pyautogui.moveTo(x=1121, y=783)
pyautogui.mouseDown(button='right')
# 移动到(100,200)再释放右键
pyautogui.mouseUp(button='right', x=100, y=200)

键盘控制

pyautogui.typewrite("你好", interval=0.5)  # interval文本输入速度

# 快捷键开启任务管理器
pyautogui.keyDown('ctrl')
pyautogui.keyDown('shift')
pyautogui.keyDown('esc')
pyautogui.keyUp('esc')
pyautogui.keyUp('shift')
pyautogui.keyUp('ctrl')

# 热键是一种按键组合
pyautogui.hotkey('ctrl', 'shift', 'esc')

# 消息框

# alert
msg = pyautogui.alert(text='这是alert!', title='Alert', button='OK')  # 只能有一个button
# msg的值为button的值。
print('ggggg')
# print(msg)

# confirm
buttons = ['ok', 'cancel']  # 可以设置多个button
msg = pyautogui.confirm(text="这是一个confirm", title='confirm', buttons=buttons)
print(msg)

# prompt
msg = pyautogui.prompt(text="这是一个prompt", title='prompt', default='')
print(msg)

# password
# 与prompt相似,只不过文本输入框的内容会被参数mask所替换显示。
msg = pyautogui.password(text="这是一个password", title='password', default='', mask='aaaaa')
print(msg)

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

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

相关文章

Vector3.Cross

上期介绍了Vector.Dot可以用来判断敌人处于自身的前方or后方,那么这期就是通过叉乘来判断敌人处于自身的左方or右方 public class CrossTest : MonoBehaviour {public GameObject sphere;public GameObject cube;// Start is called before the first frame updatev…

性能测试工具 Locust + Boomer In Docker

目录 前言: 背景 启动 Locust-master Boomer 调试模式启动 boomer locust worker 模式启动 get 请求 post 请求 指定请求头 直接使用 curl 命令 动态读取 csv --json-value-type 说明 前言: Locust 是一种开源的性能测试工具,可…

【js小游戏案例】纯前端实现飞机大战,附带源码

技能: 使用html js css实现飞机大战小游戏 需求: 我军飞机左右移动,并且按空格 可以发射炮弹,敌方飞机从上往下飞,接触到我方炮弹 飞机被歼灭,我军接触到敌军飞机也将会被歼灭,我方飞机吃到道…

【C++】vector类的模拟实现(增删查改,拷贝构造,赋值运算,深浅拷贝)

文章目录 前言一、 整体1.命名空间:2构造函数:1普通构造2迭代器构造3初始化字符构造4拷贝构造: 3析构函数 二、成员函数实现1.大小1当前大小(size())2总体容量(capacity()) 2.返回头尾迭代器1begin()2end()…

改进的北方苍鹰算法优化BP神经网络---回归+分类两种案例

今天采用前作者自行改进的一个算法---融合正余弦和折射反向学习的北方苍鹰(SCNGO)优化算法优化BP神经网络。 文章一次性讲解两种案例,回归与分类。回归案例中,作者选用了一个经典的股票数据。分类案例中,选用的是公用的UCI数据集。 BP神经网络…

达芬奇密码

《达芬奇密码》是一款由德国人发明的桌游,游戏由2-4个人组成。每个玩家执有一定的数字牌,玩家需隐藏你的数字密码,猜透对手的密码,推测可能的答案,打败对手。 24 块塑料立牌,12 个黑色和12个白色。每块上数…

7-25作业

思维导图 QT窗口代码 #include "widget.h"Widget::Widget(QWidget *parent): QWidget(parent) {qDebug()<< this->size();this->resize(1000,800);//设置宽高this->setFixedSize(1000,800);//固定宽高//窗口标题this->setWindowTitle("跟党走…

全志F1C200S嵌入式驱动开发(lcd屏幕驱动)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 lcd RGB屏幕作为比较经济、实用的显示工具,在实际场景中使用较多。它的信号来说,一般也比较简单,除了常规的数据信号,剩下来就是行同步、场同步、数据使能和时钟信号了。数据信…

LED芯片 VAS1260IB05E 带内部开关LED驱动器 汽车硬灯带灯条解决方案

VAS1260IB05E深力科LED芯片是一种连续模式电感降压转换器&#xff0c;设计用于从高于LED电压的电压源高效驱动单个或多个串联连接的LED。该设备在5V至60V之间的输入电源下工作&#xff0c;并提供高达1.2A的外部可调输出电流。包括输出开关和高侧输出电流感测电路&#xff0c;该…

【Linux】进程通信 — 管道

文章目录 &#x1f4d6; 前言1. 通信背景1.1 进程通信的目的&#xff1a;1.2 管道的引入&#xff1a; 2. 匿名管道2.1 匿名管道的原理&#xff1a;2.2 匿名管道的创建&#xff1a;2.3 父子进程通信&#xff1a;2.3.1 read()阻塞等待 2.4 父进程给子进程派发任务&#xff1a;2.5…

使用 OpenCV 进行图像模糊度检测(拉普拉斯方差方法)

写在前面 工作中遇到&#xff0c;简单整理人脸识别中&#xff0c;对于模糊程度较高的图像数据&#xff0c;识别率低&#xff0c;错误率高。虽然使用 AdaFace 模型&#xff0c;对低质量人脸表现尤为突出。但是还是需要对 模糊程度高的图像进行丢弃处理当前通过阈值分类&#xff…

8.python设计模式【组合模式】

内容&#xff1a;将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。角色&#xff1a; 抽象组建&#xff08;component&#xff09;叶子组建(Leaf)复合组建(Composite)客户端 (Client) UML 图 举个例子 需求&#xf…

Mysql-MHA高可用

MHA高可用配置及故障切换 一.MySQL MHA 1.什么是MHA &#xff08;&#xff11;&#xff09;MHA (Master High Availability) 是一套优秀的MySQL高可用环境下故障切换和主从复制的软件。 &#xff08;&#xff12;&#xff09;MHA的出现就是解决MySQL 单点的问题。 &#xff…

elementui el-table折叠表格,点击主表数据展开从表明细

用element-ui 的el-table实现&#xff1a;主表table可实现展开行显示关联的明细表table的列表数据&#xff0c;效果图如下 <el-tableref"tableData"v-loading"listLoading":data"tableData"row-key"id"borderstripehighlight-curr…

idea中设置maven本地仓库和自动下载依赖jar包

1.下载maven 地址&#xff1a;maven3.6.3 解压缩在D:\apache-maven-3.6.3-bin\apache-maven-3.6.3\目录下新建文件夹repository打开apache-maven-3.6.3-bin\apache-maven-3.6.3\conf文件中的settings.xml编辑&#xff1a;新增本地仓库路径 <localRepository>D:\apache-…

十二、数据结构——二叉树基本概念及特点

数据结构中的二叉树 目录 一、二叉树的基本概念 二、二叉树的特点 三、二叉树的分类 四、二叉树的存储结构 (一)、顺序存储 (二)、链式存储 一、二叉树的基本概念 二叉树是一种重要的数据结构&#xff0c;它是每个节点最多有两个子节点的树结构。在二叉树中&#xff0c;每个…

【源码解析】SpringBoot循环依赖源码解析II

前言 前面已经写过循环以来的分析&#xff0c;对循环依赖有一些了解&#xff0c;【源码解析】Spring循环依赖和三级缓存。简单回顾一下&#xff1a; Spring可以解决Autowired注入的循环依赖 Spring解决不了构造器注入的循环依赖 使用Aysnc注解会导致循环依赖。提前暴露的Bea…

Vue基础 --- 路由

1. 前端路由的概念与原理 1.1 什么是路由 路由&#xff08;英文&#xff1a;router&#xff09;就是对应关系。 1.2 SPA 与前端路由 SPA 指的是一个 web 网站只有唯一的一个 HTML 页面&#xff0c;所有组件的展示与切换都在这唯一的一个页面内完成。 此时&#xff0c;不同…

K8s卷存储详解(二)

K8s卷存储详解&#xff08;二&#xff09; 持久卷持久卷&#xff08;PV&#xff09;持久卷申领&#xff08;PVC&#xff09;存储类&#xff08;StorageClass&#xff09;存储制备器&#xff08;Provisioner&#xff09;PV和PVC的生命周期持久卷的类型CSI 卷快照CSI 卷克隆 投射…

《合成孔径雷达成像算法与实现》Figure2.14

%% 插值核 clc close all clear allN 40; x1 -4:1/N:4-1/N; hx sin(pi*x1)./(pi*x1); if x1 0hx 1; end figure plot(x1,hx,k) axis([-4 4,-0.4 1.2]) grid on arrow([-4,0],[4,0],Color,k,Linewidth,1); arrow([0,-0.4],[0,1.2],Color,k,Linewidth,1); %% 初始样本 x2 1…