【Python笔记】PyAutoGUI模块知识点整理

PyAutoGUI简介

pyautogul这个模块是用来模拟用户操作的模块,他可以模拟你的鼠标键盘等操作。可以说他是对我们个人而言最实用的库了。(玩游戏再也不用重复无聊的操作,被迫做打工仔了)

模块安装指令

python -m pip install -U pyautogui

模块导入

import pyautogul

设置每次执行操作的间隔时间

pyautogui.PAUSE=秒数

信息获取

 获取当前的坐标等信息

In [1]: import pyautogui

In [2]: pyautogui.size()  # 获取屏幕尺寸(分辨率×分辨率)
Out[2]: Size(width=1920, height=1080)

In [3]: pyautogui.position() # 获取鼠标当前位置
Out[3]: Point(x=846, y=437)

In [4]: pyautogui.onScreen(100,200) # 判断坐标是否在屏幕范围内
Out[4]: True

In [5]: pyautogui.onScreen(100,2000) # 判断坐标是否在屏幕范围内
Out[5]: False

 实践:

import pyautogui as pg
print(pg.size())
print(pg.position())
print(pg.onScreen(100,100))
print(pg.onScreen(40,9100))

输出

Size(width=1920, height=1080)
Point(x=763, y=319)
True
False

 鼠标控制

鼠标移动

鼠标移动包括了相对移动和绝对移动

In [7]: sizex,sizey=pyautogui.size() # 保存屏幕尺寸

# 绝对位置移动,移动至屏幕正中心,鼠标移动过渡时间duration设为1秒
In [9]: pyautogui.moveTo(sizex/2,sizey/2,duration=1)

# 相对位置移动,向右100、向上200,鼠标移动过渡时间duration设为0.5秒
In [10]: pyautogui.moveRel(100, -200, duration=0.5)

 鼠标点击

鼠标点击,一个click()函数把点鼠标的活包干,过程也可分解为mouseDown()mouseUp();另有在click()之上封装的rightClick()middleClick()doubleClick()tripleClick()等函数。

方便快捷的click


# 移动至屏幕中心点击一下左键,过渡时间0.5秒
In [16]: pyautogui.click(sizex/2,sizey/2, duration=0.5)

# 不指定x、y,在当前位置点击一下右键
In [17]: pyautogui.click(button='right')

# 移动至(100,100)点击3次左键,点击间隔0.1s,鼠标移动过渡时间0.5秒
In [18]: pyautogui.click(100,100, clicks=3,interval=0.1,duration=0.5)

# 移动至(100,100)点击2次右键,点击间隔0.5s,鼠标移动过渡时间0.2秒
In [19]: pyautogui.click(100,100, clicks=2,interval=0.5,button='right',duration=0.2)

双击按键

#双击左键

pyautogui.doubleclick(x,y)

#双击右键

 pyautogui.rightclick(x,y)

#双击滚轮

 pyautogui.middleclick(x,y)

按键拆解

#鼠标按下

pyautogui.mouseDown()

#鼠标抬起

pyautogui.mouseUp()

 鼠标拖动

# 将鼠标从当前位置拖至屏幕中心,默认左键
In [32]: pyautogui.dragTo(sizex/2,sizey/2)

# 将鼠标从当前位置向左100像素、向右200像素拖动,过渡时间0.5秒,指定右键
In [33]: pyautogui.dragRel(-100,200,duration=0.5,button='right')

 鼠标滚轮

# 鼠标位置不动

这个不太好用,基本上多大的数字都移动一小段距离,而且有些情况还不运动。

非要用的话还是建议直接控制鼠标点滑动栏,或者设置循环

而且基本上大多数地方都是可以按住中键移动鼠标实现滚动

In [22]: pyautogui.scroll(450) 

正数向上,负数向下。

 鼠标按键组合

#拖动的同时还按着一个按键(相对位置)

pyautogui.drag(x,y,button='')

#拖动的同时还按着一个按键(绝对位置)

pyautogui.dragto(x,y,button='')

 键盘控制

常态的按键模拟



# 键名用字符串表示,支持的所有键名,存在pyautogui.KEYBOARD_KEYS变量中,包括26个字母、数字、符号、F1~F20、方向等等所有按键
In [4]: pyautogui.press('a') # 按字母A键,字母支持大小写

# 程序向终端输入了字符a,若程序运行时输入法为中文状态,由于没有继续输入空格或回车,输入法仅列出候选字,并不会输入到终端
In [5]: a 

# 传入键名列表(按键p、按键y、空格),按键之间间隔0.1秒(默认0)
In [6]: pyautogui.press(['p','y','space'], interval=0.1)

# 运行前将输入法切换到中文状态,往终端直接输入了“培养”
In [7]: 培养

# typewrite方式一:传入字符串,不支持中文字符,因为函数无法知道输入法需要什么按键才能得到中文字符
In [9]: pyautogui.typewrite('hello, PyAutoGUI!\n')

# 程序把字符串"'hello, PyAutoGUI!"和换行符输入到了终端
In [10]: hello, PyAutoGUI!
    ...:

# typewrite方式二:传入键名列表,按键之间间隔0.1秒(默认0)
In [11]: pyautogui.typewrite(['s','r','f','space'], interval=0.1)

# 运行前将输入法切换到中文状态,往终端直接输入了“输入法”3个字
In [12]: 输入法

# 大小写字母是自动支持的,仍然尝试一次切换到大写
In [13]: pyautogui.typewrite(['capslock','p','y'])

# CapsLock按键灯被点亮,程序往终端输入了"PY"
In [14]: PY

# hotkey屏蔽了需要反复keyDown、keyUp的细节,参数是任意个键名,而非列表
In [18]: pyautogui.hotkey('ctrl', 'shift', 'esc') #调出任务管理器

In [19]:pyautogui.hotkey('alt','ctrl','delete') # 并未调出重启界面

键盘按下和抬起

#模拟按键按下

pyautogui.keyDown()

#模拟按键抬起

pyautogui.keyUp()

#按下多个按键

pyautogui.hotkey('','')

按键可执行的按键:

 图片借鉴于【精选】pyautogui库的使用教程(超详细)_QQVQQ...的博客-CSDN博客

他总结的也很详细。我觉得算是现在最好的总结了。

基本上所有的按键都能实现,所以也可以用他来实现一些热键

比如切换输入法,复制粘贴。

按住某个按键

with pyautogui.hold('shift'):

    pyautogui.press(['left', 'left', 'left'])

 消息窗口

产生一个窗口

In [24]: pyautogui.alert(text='警告',title='PyAutoGUI消息框',button='OK')
Out[24]: 'OK' # 点击的按键被返回

In [28]: pyautogui.confirm(text='请选择',title='PyAutoGUI消息框',buttons=['1','2'
    ...: ,'3'])
Out[28]: '2' # 点击的按键被返回

In [30]: pyautogui.prompt(text='请输入',title='PyAutoGUI消息框',default='请输入')
Out[30]: 'input by 伪码人' # 点OK按钮后返回输入内容

In [32]: pyautogui.password(text='输入密码',title='PyAutoGUI消息框',default='',mask='*')
Out[32]: 'We_Coder' # 点OK按钮后返回输入内容

截图

PyAutoGUI提供了screenshot()函数进行屏幕截图,返回是Image对象,这是在Pillow库中定义的,因此需要安装Pillow库才能正常工作。

# imageFilename参数,截图要保存的文件全路径名,默认`None`,不保存;
# region参数,截图区域,由左上角坐标、宽度、高度4个值确定,如果指定区域超出了屏幕范围,超出部分会被黑色填充,默认`None`,截全屏
In [41]: pyautogui.screenshot('shot.png',region=(1000,600,600,400))
Out[41]: <PIL.Image.Image image mode=RGB size=600x400 at 0x20C87497390>

#返回这个图片在现在屏幕上出现的第一个位置的元组

pyautogui.locateOnScreen('photo.png') 

#返回这个图片在屏幕上出现的所有位置(生成器)

pyautogui.locateAllOnScreen('photo.png')

#返回当前图片在屏幕上的中心坐标

pyautogui.locateCenterOnScreen('photo.png')

图像颜色识别

(本部分我打算后面补充,到时候专门出一个图片识别的)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

统信UOS_麒麟KYLINOS配置日志轮转

原文链接:统信UOS/麒麟KYLINOS配置日志轮转 hello,大家好啊,今天给大家带来一篇在统信UOS/麒麟KYLINOS上配置日志轮转的文章。本文举例的内容如下:首先我们创建一个定时任务,在每天00:00给/var/log/hello路径下的hello…

Yolov8实现瓶盖正反面检测

一、模型介绍 模型基于 yolov8n数据集采用SKU-110k,这数据集太大了十几个 G,所以只训练了 10 轮左右就拿来微调了 基于原木数据微调:训练 200 轮的效果 10 轮SKU-110k 20 轮原木 200 轮瓶盖正反面 微调模型下载地址https://wwxd.lanzouu.co…

新建的springboot项目中application.xml没有绿色小叶子(不可用)

经常有朋友会遇到新建了一个springboot项目,发现为啥我创建的application.xml配置文件不是绿色的??? 下面教大家如何解决,这也是博主在做测试的时候遇到的: 将当前位置application.xml删掉,重新…

销售客户分配管理细则

随着市场竞争的不断加剧,销售团队的有效管理变得愈发重要。其中,客户分配是销售团队成功的关键之一。一个科学合理的销售客户分配管理细则不仅可以提高销售团队的整体工作效率,还能够优化客户体验,促使销售业绩持续增长。下面是一…

排序分析(Ordination analysis)及R实现

在生态学、统计学和生物学等领域,排序分析是一种用于探索和展示数据结构的多元统计技术。这种分析方法通过将多维数据集中的样本或变量映射到低维空间,以便更容易理解和可视化数据之间的关系。排序分析常用于研究物种组成、生态系统结构等生态学和生物学…

将360调配成绿色无弹窗软件

相信很多小伙伴都跟我一样喜欢杀毒软件的功能。而小编认为最好用的杀毒软件就是360了。360功能齐全,界面美观,但总是有很多弹窗小广告,怎么办呢? 今天就来就来教大家如何将360设置为绿色无弹窗软件 将360调配成绿色无弹窗软件 一…

9款高效绘图神器,提升你的工作效率

在日常工作或生活中,我们必须绘制各种图表、流程图、思维导图等图形,或者想用画笔描述自己的想法。然而,我们在许多绘图软件面前感到困惑。我们不知道哪个绘图软件好,也没有足够的时间一一尝试 在接下来的空间里,我们…

python之pyqt专栏9-鼠标事件

目录 需求 UI界面 代码实现 代码解析: Label初始化设置 重写鼠标按下事件 重写鼠标释放事件 重写鼠标移动事件 运行结果 需求 当鼠标进入窗口时,点击鼠标左键,出现一个label并在显示光标在窗口的坐标;按住左键不释放拖动…

Java学习day15:Object类、set集合(知识点+例题详解)

声明:该专栏本人重新过一遍java知识点时候的笔记汇总,主要是每天的知识点题解,算是让自己巩固复习,也希望能给初学的朋友们一点帮助,大佬们不喜勿喷(抱拳了老铁!) 往期回顾 Java学习day14:权限…

软件系统安全漏洞检测应该怎么做?靠谱的软件安全检测公司推荐

软件系统安全漏洞检测是指通过对软件系统进行全面的、系统化的评估,发现和解决其中可能存在的安全漏洞和隐患。这些安全漏洞可能会被不法分子利用,引发数据泄露、系统瘫痪、信息被篡改等安全问题,给企业造成严重的经济和声誉损失。那么软件系…

jenkins 使用 nexus插件,将代码打包好推送到制品库

Nexus是一个开源的、基于Java的应用程序框架和存储库管理系统,可用于管理软件开发和部署的所有相关构件。 它允许用户创建和维护Maven存储库,使其更易于组织,搜索和共享构建工件和库。 Nexus具有安全性和身份验证、多格式支持、镜像管理和自定…

精彩回顾|迪捷软件先进装备软件技术研讨会之行圆满收官

2023年11月24日,为期3个月的先进装备软件高安全、高可靠、智能化验证技术系列研讨会在成都圆满收官。迪捷软件董事长康烁作为研讨会特邀专家,在西安、上海、成都站进行了演讲分享。 以航空航天、船舶、电力电子、汽车、医疗为代表的先进装备软件发展迅速…

ELK+filebeat+kafka

无需创建logstash的端口,直接创建topic 远程收集mysql和httpd的日志 (一)安装nginx和mysql服务 1、打开mysql的日志功能 2、创建日志(创库、创表、添加数据) (1)mysql服务器上安装http system…

Jenkins持续集成Python项目

一、前言   之前学习了很多自动化测试框架,但是写的脚本都是本地执行,多数用来造数据。最近公司掀起一股自动化测试的风,所以就想研究下如何集成jenkins,本次采用pytest,用的是阿里云服务器centos7。 二、服务器环境…

功能测试常见的测试方法及其使用实例说明

📢专注于分享软件测试干货内容,欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!📢交流讨论:欢迎加入我们一起学习!📢资源分享:耗时200小时精选的「软件测试」资…

软文推广如何自然融入品牌?媒介盒子有妙招

软文推广作为一种柔性推广方式,能将品牌信息融入到用户日常浏览的内容中,让用户不知不觉接触品牌,从而产生好感,这种方式既可以避免广告带来的反感,又可以提高广告的有效性。那么在推广中应该如何自然融入品牌信息呢&a…

一文看懂:库存分析如何做?

在之前的文章中,老李给大家简单介绍了制造业数据分析用到的指标体系和典型分析场景。如果你读过那篇文章,你就会知道制造业主要有两个典型的分析场景,一是库存管理,二是生产管理。虽然老李在之前的文章中提到了这两个场景&#xf…

Cesium.CustomShader颜色值显示错误

官方示例: Cesium Sandcastle 测试过程: 1、修改示例,把customshader中的fragmentShaderText替换为如下代码 void fragmentMain(FragmentInput fsInput, inout czm_modelMaterial material) {//注意:下述颜色的b值是0.1&#x…

IPv6+2.0网络切片技术在电子政务网的应用实践详解

IPv6是面向5G、云网/算网融合的智能IP技术,具有包含可编程路径、快速业务发放、自动化运维、质量可视化、SLA保障和应用感知等特点。IPv6将万物互联提升到了万物智联,赋能百行百业高质量数字化转型。 图示:“IPv6”技术创新体系发展的三个阶段…

机器学习模型验证——以数据为中心的方法

构建机器学习模型时,人们往往将激情和精力集中于收集数据和训练模型,对测试模型和验证结果往往缺少应有的关注。正确的验证技术有助于估计无偏见的广义模型的性能,并更好地理解模型训练的效果。您需要确保机器学习模型经过准确的训练&#xf…