Python键鼠操作自动化库PyAutoGUI简介(小结)


Posted in Python onMay 17, 2020

PyAutoGUI是一个Python语言的键鼠自动化库,简单来说和按键精灵的功能一样。但是因为是Python的类库,所以可以使用Python代码配合一些其他类库完成更加强大的功能。下面让我为大家介绍一下吧。

安装

从pip安装即可。

pip install pyautogui

稍等一下安装就完毕了。

Python键鼠操作自动化库PyAutoGUI简介(小结)

使用介绍

简单介绍一下PyAutoGUI的函数以及使用方法。

鼠标操作函数

操作鼠标点击的函数。

函数 简单说明
move(x,y)、 moveTo(x,y) 移动鼠标,前者移动相对位置,后者移动到指定位置
click(x,y)、doubleClick、rightClick 单击/双击/右击,无参版本在当前位置点击鼠标
drag(x,y)、dragTo(x,y) 拖动鼠标
mouseDown、mouseUp 按下按键,松开按键
scroll 向下滚动鼠标滚轮的函数

键盘操作函数

操作键盘按键的函数。

函数 简介
press('left',press=3)
hotkey('ctrl','s') 按下Ctrl+S组合键
keyDown、keyUp 按下和松开键盘按键

提示框函数

PyAutoGUI可以显示提示框,这时候程序会暂停运行,直到用户点击提示框。

函数 简介
alert(text='',title='',button=['OK','Cancle']) 显示警告对话框
confirm() 显示确认对话框
prompt() 显示提示对话框
password() 显示密码输入对话框

屏幕截图和定位函数

截取屏幕的函数,也可以从屏幕中寻找匹配的图片,并返回其坐标。你可以事先保存一些按钮的截图,然后通过这种方式定位按钮的位置,然后点击。

函数 简介
screenshot('image.png') 保存截图并返回截图,无参版本直接返回截图不保存
center('image.png') 从屏幕上寻找图片位置,返回框位置
locateOnScreen('img') 从屏幕寻找图片位置,直接返回坐标

简单例子

先来看看官网的画图例子,我把代码稍微改了一下。运行这个例子需要先打开一个画图窗口,并放到全屏,然后运行Python代码,迅速将画图程序切换到前台。这样就可以看到PyAutoGUI控制鼠标来绘制精确的直线了。

import pyautogui
import time

time.sleep(3)

distance = 100
pyautogui.moveTo(400, 300)
while distance > 0:
  pyautogui.drag(distance, 0, duration=0.1)  
  distance -= 5
  pyautogui.drag(0, distance, duration=0.1)  
  pyautogui.drag(-distance, 0, duration=0.1) 
  distance -= 5
  pyautogui.drag(0, -distance, duration=0.1)

绘制出来的图片应该是这样的。

Python键鼠操作自动化库PyAutoGUI简介(小结)

如果要完成一些实际工作,难免会遇到识别点击复杂样式图片的场景。前面提到了截图和图片识别可以比较好的解决这个问题。这个例子需要先安装OpenCV库和opencv-python包,安装完毕之后就可以运行了。这里将win10计算器的几个按钮保存成图片,然后用PyAutoGUI的图片识别功能找到按钮的坐标,这样就可以无障碍的点击按钮,无需关心窗口的位置。特别提一点,下面的confidence参数需要安装了OpenCV才可以使用,它允许我们模糊匹配图片。

import pyautogui
import time

time.sleep(3)

# Windows计算器的按钮截图
five = '5.png'
eight = '8.png'
multiply = 'multiply.png'
equals = 'equals.png'

# 图片识别和点击的函数


def find_and_click(image):
  x, y = pyautogui.locateCenterOnScreen(image, confidence=0.9)
  pyautogui.click(x, y)


# 执行5*8=
find_and_click(five)
find_and_click(multiply)
find_and_click(eight)
find_and_click(equals)

这个例子的截图和代码都在我的github上,欢迎大家查看。

https://github.com/techstay/python-study/tree/master/pyautogui-sample

到此这篇关于Python键鼠操作自动化库PyAutoGUI简介(小结)的文章就介绍到这了,更多相关Python PyAutoGUI内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python算法学习之计数排序实例
Dec 18 Python
Python内置的HTTP协议服务器SimpleHTTPServer使用指南
Mar 30 Python
Python字典数据对象拆分的简单实现方法
Dec 05 Python
python opencv实现任意角度的透视变换实例代码
Jan 12 Python
Flask 让jsonify返回的json串支持中文显示的方法
Mar 26 Python
Python数据抓取爬虫代理防封IP方法
Dec 23 Python
python接口自动化如何封装获取常量的类
Dec 24 Python
windows下python安装pip方法详解
Feb 10 Python
Python Numpy 控制台完全输出ndarray的实现
Feb 19 Python
python百行代码自制电脑端网速悬浮窗的实现
May 12 Python
python 元组的使用方法
Jun 09 Python
Python中zipfile压缩文件模块的基本使用教程
Jun 14 Python
python 实现PIL模块在图片画线写字
May 16 #Python
在python image 中实现安装中文字体
May 16 #Python
Python 判断时间是否在时间区间内的实例
May 16 #Python
解决Python Matplotlib绘图数据点位置错乱问题
May 16 #Python
Python填充任意颜色,不同算法时间差异分析说明
May 16 #Python
解决echarts中饼图标签重叠的问题
May 16 #Python
实现ECharts双Y轴左右刻度线一致的例子
May 16 #Python
You might like
Zend Studio for Eclipse的java.lang.NullPointerException错误的解决方法
2008/12/06 PHP
PHP面向对象之领域模型+数据映射器实例(分析)
2017/06/21 PHP
php爬取天猫和淘宝商品数据
2018/02/23 PHP
利用js的Node遍历找到repeater的一个字段实例介绍
2013/04/25 Javascript
Jquery实现显示和隐藏的4种简单方式
2013/08/28 Javascript
js的匿名函数使用介绍
2013/12/11 Javascript
indexedDB bootstrap angularjs之 MVC DOMO (应用示例)
2016/06/20 Javascript
Nodejs--post的公式详解
2017/04/29 NodeJs
angularjs项目的页面跳转如何实现(5种方法)
2017/05/25 Javascript
表格展示利器 Bootstrap Table实例代码
2017/09/06 Javascript
小程序云开发初探(小结)
2018/10/24 Javascript
JointJS JavaScript流程图绘制框架解析
2019/08/15 Javascript
javascript之分片上传,断点续传的实际项目实现详解
2019/09/05 Javascript
[29:16]完美世界DOTA2联赛决赛日 Inki vs LBZS 第三场 11.08
2020/11/10 DOTA
Python常见文件操作的函数示例代码
2011/11/15 Python
python正则表达式抓取成语网站
2013/11/20 Python
python中django框架通过正则搜索页面上email地址的方法
2015/03/21 Python
python 3.0 模拟用户登录功能并实现三次错误锁定
2017/11/01 Python
分析python动态规划的递归、非递归实现
2018/03/04 Python
使用python编写udp协议的ping程序方法
2018/04/22 Python
Python中浅拷贝copy与深拷贝deepcopy的简单理解
2018/10/26 Python
python-numpy-指数分布实例详解
2019/12/07 Python
Python基于jieba, wordcloud库生成中文词云
2020/05/13 Python
Python实现封装打包自己写的代码,被python import
2020/07/12 Python
python获取整个网页源码的方法
2020/08/03 Python
python cookie反爬处理的实现
2020/11/01 Python
Can a struct inherit from another struct? (结构体能继承结构体吗)
2016/09/25 面试题
应聘自荐书
2013/10/08 职场文书
运动会解说词100字
2014/01/31 职场文书
民事上诉状范文
2015/05/22 职场文书
2015年保险业务员工作总结
2015/05/27 职场文书
采购员工作总结范文
2015/08/12 职场文书
详解Python小数据池和代码块缓存机制
2021/04/07 Python
Python 多线程处理任务实例
2021/11/07 Python
Java 超详细讲解设计模式之中的抽象工厂模式
2022/03/25 Java/Android
Linux中如何安装并部署Redis
2022/04/18 Servers