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创建和使用字典实例详解
Nov 01 Python
Python对小数进行除法运算的正确方法示例
Aug 25 Python
python微信跳一跳系列之自动计算跳一跳距离
Feb 26 Python
Python高级用法总结
May 26 Python
transform python环境快速配置方法
Sep 27 Python
pymongo中group by的操作方法教程
Mar 22 Python
Python笔记之工厂模式
Nov 20 Python
Python通过两个dataframe用for循环求笛卡尔积
Apr 29 Python
基于Keras中Conv1D和Conv2D的区别说明
Jun 19 Python
Django配置Bootstrap, js实现过程详解
Oct 13 Python
python中altair可视化库实例用法
Jan 26 Python
python开发实时可视化仪表盘的示例
May 07 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实现微信发红包程序
2015/08/24 PHP
分享50个提高PHP执行效率的技巧
2015/12/26 PHP
PHP7匿名类用法分析
2016/09/26 PHP
php使用SAE原生Mail类实现各种类型邮件发送的方法
2016/10/10 PHP
通用javascript脚本函数库 方便开发
2009/10/13 Javascript
js函数的引用, 关于内存的开销
2012/09/17 Javascript
Raphael一个用于在网页中绘制矢量图形的Javascript库
2013/01/08 Javascript
获取内联和链接中的样式(js代码)
2013/04/11 Javascript
在JavaScript中实现类的方式探讨
2013/08/28 Javascript
js判断是否为ie的方法小结
2014/01/13 Javascript
javascript设置连续两次点击按钮时间间隔的方法
2014/10/28 Javascript
JavaScript实现列出数组中最长的连续数
2014/12/29 Javascript
原生javascript实现图片滚动、延时加载功能
2015/01/12 Javascript
Javascript生成全局唯一标识符(GUID,UUID)的方法
2016/02/27 Javascript
Jquery ui datepicker设置日期范围,如只能隔3天【实现代码】
2016/05/04 Javascript
js变量提升深入理解
2016/09/16 Javascript
JavaScript实现图片无缝滚动效果
2017/07/07 Javascript
JS去掉字符串中所有的逗号
2017/10/18 Javascript
angular2中使用第三方js库的实例
2018/02/26 Javascript
浅谈Vue响应式(数组变异方法)
2018/05/07 Javascript
jQuery删除/清空指定元素的所有子节点实例代码
2019/07/04 jQuery
使用vue-cli4.0快速搭建一个项目的方法步骤
2019/12/04 Javascript
js瀑布流布局的实现
2020/06/28 Javascript
[01:32]2016国际邀请赛中国区预选赛IG战队首日赛后采访
2016/06/27 DOTA
Python实现的生成格雷码功能示例
2018/01/24 Python
Python3实现从排序数组中删除重复项算法分析
2019/04/03 Python
使用python接受tgam的脑波数据实例
2020/04/09 Python
用HTML5中的Canvas结合公式绘制粒子运动的教程
2015/05/08 HTML / CSS
英国和世界各地预订便宜的酒店:LateRooms.com
2019/05/05 全球购物
利用指针变量实现队列的入队操作
2012/04/07 面试题
八项规定整改措施
2014/02/12 职场文书
动漫设计与制作专业推荐信
2014/07/07 职场文书
动画设计系毕业生求职信
2014/07/15 职场文书
公司委托书格式范本
2014/09/16 职场文书
父母教会我观后感
2015/06/17 职场文书
教师节表彰会主持词
2015/07/06 职场文书