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 相关文章推荐
socket + select 完成伪并发操作的实例
Aug 15 Python
python3 flask实现文件上传功能
Mar 20 Python
django_orm查询性能优化方法
Aug 20 Python
python中报错"json.decoder.JSONDecodeError: Expecting value:"的解决
Apr 29 Python
python3读取图片并灰度化图片的四种方法(OpenCV、PIL.Image、TensorFlow方法)总结
Jul 04 Python
对Django项目中的ORM映射与模糊查询的使用详解
Jul 18 Python
pytorch之添加BN的实现
Jan 06 Python
Python各种扩展名区别点整理
Feb 27 Python
Java byte数组操纵方式代码实例解析
Jul 22 Python
python+pygame实现坦克大战小游戏的示例代码(可以自定义子弹速度)
Aug 11 Python
python脚本第一行如何写
Aug 30 Python
Python爬虫抓取论坛关键字过程解析
Oct 19 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
PHP程序61条面向对象分析设计的经验小结
2008/11/12 PHP
php中强制下载文件的代码(解决了IE下中文文件名乱码问题)
2011/05/09 PHP
PHP利用header跳转失效的解决方法
2014/10/24 PHP
php实现根据词频生成tag云的方法
2015/04/17 PHP
PHP中使用curl入门教程
2015/07/02 PHP
PHP实现求解最长公共子串问题的方法
2017/11/17 PHP
PHP创建文件及写入数据(覆盖写入,追加写入)的方法详解
2019/02/15 PHP
过虑特殊字符输入的js代码
2010/08/05 Javascript
JS原型对象通俗"唱法"
2012/12/27 Javascript
jQuery统计指定子元素数量的方法
2015/03/17 Javascript
JavaScript操作URL的相关内容集锦
2015/10/29 Javascript
javascript动画系列之模拟滚动条
2016/12/13 Javascript
vue2.0 better-scroll 实现移动端滑动的示例代码
2018/01/25 Javascript
vue-router动态设置页面title的实例讲解
2018/08/30 Javascript
深入理解Vue 的钩子函数
2018/09/05 Javascript
利用jsonp解决js读取本地json跨域的问题
2018/12/11 Javascript
jQuery实现动态添加和删除input框代码实例
2019/03/29 jQuery
Vue编程式跳转的实例代码详解
2019/07/10 Javascript
js 解析 JSON 数据简单示例
2020/04/21 Javascript
Vue实现图书管理小案例
2020/12/03 Vue.js
[00:50]2014DOTA2国际邀请赛 NEWBEE战队回顾
2014/08/01 DOTA
Python实现的几个常用排序算法实例
2014/06/16 Python
简单介绍Python的Tornado框架中的协程异步实现原理
2015/04/23 Python
Python3实现对列表按元组指定列进行排序的方法分析
2018/12/22 Python
python getopt模块使用实例解析
2019/12/18 Python
Python 解析简单的XML数据
2020/07/24 Python
css3 clip实现圆环进度条的示例代码
2018/02/07 HTML / CSS
土耳其时尚购物网站:Morhipo
2017/09/04 全球购物
英国时尚运动品牌的合集:The Sports Edit
2017/12/20 全球购物
大学生毕业求职的自我评价
2013/09/29 职场文书
教师校本培训方案
2014/02/26 职场文书
三爱活动实施方案
2014/03/19 职场文书
软环境建设心得体会
2014/09/09 职场文书
刑事上诉状范文
2015/05/22 职场文书
JAVA SpringMVC实现自定义拦截器
2022/03/16 Python
oracle设置密码复杂度及设置超时退出的功能
2022/06/28 Oracle