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中关于日期时间处理的问答集锦
Mar 08 Python
python实现根据窗口标题调用窗口的方法
Mar 13 Python
极简的Python入门指引
Apr 01 Python
在Python中使用Mako模版库的简单教程
Apr 08 Python
Python装饰器使用实例:验证参数合法性
Jun 24 Python
python类和继承用法实例
Jul 07 Python
用Python写王者荣耀刷金币脚本
Dec 21 Python
python爬虫中get和post方法介绍以及cookie作用
Feb 08 Python
python正则表达式之对号入座篇
Jul 24 Python
情人节快乐! python绘制漂亮玫瑰
Aug 18 Python
Python PyQt5 Pycharm 环境搭建及配置详解(图文教程)
Jul 16 Python
python 队列基本定义与使用方法【初始化、赋值、判断等】
Oct 24 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
动画 《Pokemon Sword·Shield》系列WEB动画《薄明之翼》第2话声优阵容公开!
2020/03/06 日漫
php快速url重写更新版[需php 5.30以上]
2010/04/25 PHP
php中通过curl模拟登陆discuz论坛的实现代码
2012/02/16 PHP
php在apache环境下实现gzip配置方法
2015/04/02 PHP
PHPMAILER实现PHP发邮件功能
2018/04/18 PHP
根据出生日期自动取得星座的js代码
2010/07/20 Javascript
jQuery1.4.2与老版本json格式兼容的解决方法
2011/02/12 Javascript
IE6/7 and IE8/9/10(IE7模式)依次隐藏具有absolute或relative的父元素和子元素后再显示父元素
2011/07/31 Javascript
jquery教程限制文本框只能输入数字和小数点示例分享
2014/01/13 Javascript
createTextRange()的使用示例含文本框选中部分文字内容
2014/02/24 Javascript
一个JavaScript函数把URL参数解析成Json对象
2014/09/24 Javascript
如何检测JavaScript的各种类型
2016/07/30 Javascript
微信小程序 http请求详细介绍
2016/10/09 Javascript
Javascript中常用类型的格式化方法小结
2016/12/26 Javascript
vue组件实现进度条效果
2018/06/06 Javascript
vue 使某个组件不被 keep-alive 缓存的方法
2018/09/21 Javascript
微信小程序使用wxParse解析html的方法示例
2019/01/17 Javascript
使用webpack编译es6代码的方法步骤
2019/04/28 Javascript
PYTHON 中使用 GLOBAL引发的一系列问题
2016/10/12 Python
详解MySQL数据类型int(M)中M的含义
2016/11/20 Python
Django admin美化插件suit使用示例
2017/12/12 Python
Django中的CBV和FBV示例介绍
2018/02/25 Python
带你认识Django
2019/01/15 Python
python-pyinstaller、打包后获取路径的实例
2019/06/10 Python
浅谈PySpark SQL 相关知识介绍
2019/06/14 Python
解决python中的幂函数、指数函数问题
2019/11/25 Python
Python爬虫使用bs4方法实现数据解析
2020/08/25 Python
Python Spyder 调出缩进对齐线的操作
2021/02/26 Python
学生党员的自我评价范文
2014/03/01 职场文书
青春奉献演讲稿
2014/05/08 职场文书
单位绩效考核方案
2014/05/11 职场文书
大学生村官座谈会发言材料
2014/05/25 职场文书
领导班子个人查摆问题对照检查材料
2014/10/02 职场文书
Nginx安装完成没有生成sbin目录的解决方法
2021/03/31 Servers
SpringBoot 拦截器妙用你真的了解吗
2021/07/01 Java/Android
Python tensorflow卷积神经Inception V3网络结构
2022/05/06 Python