Python键鼠操作自动化库PyAutoGUI简介(小结)
作者:techstay 发布时间:2022-01-04 09:08:53
PyAutoGUI是一个Python语言的键鼠自动化库,简单来说和按键精灵的功能一样。但是因为是Python的类库,所以可以使用Python代码配合一些其他类库完成更加强大的功能。下面让我为大家介绍一下吧。
安装
从pip安装即可。
pip install 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)
绘制出来的图片应该是这样的。
如果要完成一些实际工作,难免会遇到识别点击复杂样式图片的场景。前面提到了截图和图片识别可以比较好的解决这个问题。这个例子需要先安装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
来源:https://segmentfault.com/a/1190000022663620


猜你喜欢
- 项目现状项目是一个数据监测平台,引入了ehcart和three.js 负责项目的数据可视化;打包后,体积高达2.1M,这个体积相比于我的项目
- 由于数据存放在大数据平台的Hive数据仓库中,我需要在Win10系统上利用Python3连接Hive,然后读取数据,进行探索、分析和挖掘工作
- mysql5.7.18zip版本在windows的安装,就是解压,初始化,然后做一些密码修改的设置即可使用,如果需要远程连接,需要更改用户表
- 前言最近有人问我装饰器是什么,我就跟他说,其实就是装饰器就是类似于女孩子的发卡。你喜欢的一个女孩子,她可以有很多个发卡,而当她戴上不同的发卡
- Frame切换在本文中,将介绍如何使用 Frame tkraise() 方法在 Tkinter 应用程序中的Frame之间切换。1、Fram
- 前言我们已经配置完Django,今天就来学学静态文件与模板的放置使用。模板在上一章节中我们的视图函数test使用了HttpResponse返
- 常用当前循环.作用default数据为空时设置默认值length取变量长度filesizeformat文件大小转成可读slice从指定位置到
- 查看数据库状态:service mysqld status 启动数据库:service mysqld start&
- 一道笔试题思考而来的,通常情况下没人会在函数内部修改参数值。这里仅拿出来讨论,有三种方式可以修改。1,直接修改函数声明时的形参functio
- 因为mounted函数只会在html和模板渲染之后会加载一次,但是在子组件中只有第一次的数据显示是正常的,所以需要再增加一个updated函
- 前言通常我们需要编写好的错误处理方式,在了避免某些程序员滥用异常,于是Go这里直接把异常这一块给砍掉了,最终还是通过返回值来判断程序的异常情
- 本文所依赖的环境为:进程和线程的概念进程概念我们想运行一个程序,首先会将该程序从存储介质上通过IO总线加载进内存中,而后再通过cpu进行调度
- 以下各种方式仅供参考,本人亲测只有官方提供的方式比较靠谱。1. 使用多个进程启动多个Tornado实例import tornado.http
- 前言:什么是分布式事务?银行跨行转账业务是一个典型分布式事务场景,假设A需要跨行转账给B,那么就涉及两个银行的数据,无法通过一个数据库的本地
- 一、数组的创建方式一var a = new Array(); a[0]="wo"
- 用了腾讯QQ也有将近十年了,今天心血来潮想模仿腾讯QQ的登陆面板做一个web版的登陆面板,然后参考了一些代码,自己模仿,学写了一个。&nbs
- 如何创建列表,或生成列表。这里介绍在python的基础知识里创建或转变或生成列表的一些方法。零个,一个或一系列数据用逗号隔开,放在方括号[
- 在例子视图中返回文本的方式有点特别,即HTML被直接硬编码在Python代码之中。def current_datetime(request)
- 现在拥有了正则表达式这把神兵利器,我们就可以进行对爬取到的全部网页源代码进行筛选了。下面我们一起尝试一下爬取内涵段子网站:http://ww
- 一、定位元素的8种方式1、方法介绍定位一个元素定位多个元素含义find_element_by_id()find_elements_by_id