使用 python pyautogui实现鼠标键盘控制功能


Posted in Python onAugust 04, 2019

pyautogui是一个可以控制鼠标和键盘的python库,类似的还有pywin32。

pyautogui的安装

pip3 install python3-xlib 依赖库 sudo apt-get install scrot 依赖库 pip3 install pyautogui python3下安装pyautogui库 import pyautogui 引入该库

pyautogui的方法保护措施

为了防止pyautogui夺取了鼠标的控制权导致我们无法关掉该程序,它提供了一个保护措施,即把鼠标移到最左上角,此时程序报错退出;

默认FAILSAFE=True,保护模式开启

FAILSAFE = False 关闭保护措施

获取屏幕信息

size() 获取当前屏幕的分辨率,如(1920,1080)二元组

注意:屏幕左上角是原点(0,0),整个屏幕相当于第一象限

position() 获取鼠标当前坐标

onScreen(x,y) 判断点(x,y)是否在屏幕范围内,如负值一定返回False

移动鼠标

moveTo(x,y,duration=0.25) 用0.25s的时间将鼠标移到(x,y)位置 moveRel(x,y,duration=0.25) 以鼠标所在位置为原点,将鼠标移动到(x,y)处

下面代码,让鼠标在指定位置绕一个正方形转动10圈

import pyautogui
for i in range(10):
 pyautogui.moveTo(300, 300, duration=0.25)
 pyautogui.moveTo(400, 300, duration=0.25)
 pyautogui.moveTo(400, 400, duration=0.25)
 pyautogui.moveTo(300, 400, duration=0.25)

下面代码,让鼠标绕当前位置绕正方形转10圈

import pyautogui
for i in range(10):
 pyautogui.moveRel(100, 0, duration=0.25)
 pyautogui.moveRel(0, 100, duration=0.25)
 pyautogui.moveRel(-100, 0, duration=0.25)
 pyautogui.moveRel(0, -100, duration=0.25)

鼠标事件

点击鼠标

click(x, y, button='left', click=3, interval=0.5)

button有3个选项:left,middle,right,不加则默认点击鼠标左键click表示单击次数interval表示每次单击之间的时间间隔click()函数实际由mouseDown()和mouseUp()组成,即按下和松开;

pyautogui.doubleClick() 鼠标双击,其实就是执行两次click()函数。 pyautogui.rightClick() 右击 pyautogui.middleClick() 中击

鼠标滚轮

scroll(200) 控制鼠标的滚轮,正值上滚,负值下滚

拖拽鼠标

dragTo() dragRel()

按下鼠标,并拖拽到指定位置,用法同moveTo(),moveRel()窗口截图处理、寻找目标按钮截图功能

im = screenshot( region=(x,y,width,heigth) ) 截取以(x,y)为左上角且指定宽高的区域,不加参数,默认截取整个屏幕

im.getpixel( (x,y) ) 获取指定位置的像素,是一个三元组(注意输入格式) pixelMatchesColor(x,y,(R,G,B)) 判断(x,y)处的像素是否等于RGB im.save('xx.png') 保存为x.png

寻找按钮

locateOnscreen('xx.png') 寻找屏幕中和xx.png一样的图标位置,是一个四元组 click( center( locateOnscreen('xx.png') ) ) 点击该图标的中心,center用来获取图标中心点的坐标

比如把网易云音乐的应用存为music.png,上述就执行自动点击网易云的图标

总结

以上所述是小编给大家介绍的python中的pyautogui实现鼠标键盘控制功能,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

Python 相关文章推荐
Python中itertools模块用法详解
Sep 25 Python
Pycharm学习教程(2) 代码风格
May 02 Python
python使用fcntl模块实现程序加锁功能示例
Jun 23 Python
python+opencv实现的简单人脸识别代码示例
Nov 14 Python
python3+requests接口自动化session操作方法
Oct 13 Python
浅谈Python大神都是这样处理XML文件的
May 31 Python
pytorch 在网络中添加可训练参数,修改预训练权重文件的方法
Aug 17 Python
python 在threading中如何处理主进程和子线程的关系
Apr 25 Python
python实现猜数游戏(保存游戏记录)
Jun 22 Python
解决TensorFlow程序无限制占用GPU的方法
Jun 30 Python
安装python依赖包psycopg2来调用postgresql的操作
Jan 01 Python
梳理总结Python开发中需要摒弃的18个坏习惯
Jan 22 Python
Python 实现遥感影像波段组合的示例代码
Aug 04 #Python
PyQtGraph在pyqt中的应用及安装过程
Aug 04 #Python
详解用python生成随机数的几种方法
Aug 04 #Python
python下PyGame的下载与安装过程及遇到问题
Aug 04 #Python
python中pygame安装过程(超级详细)
Aug 04 #Python
浅谈python图片处理Image和skimage的区别
Aug 04 #Python
Python下opencv图像阈值处理的使用笔记
Aug 04 #Python
You might like
PHP 第三节 变量介绍
2012/04/28 PHP
PHP中使用TCPDF生成PDF文档实例
2014/07/01 PHP
php 使用array函数实现分页
2015/02/13 PHP
Android中资源文件(非代码部分)的使用概览
2012/12/18 Javascript
如何用jquery控制表格奇偶行及活动行颜色
2014/04/20 Javascript
javascript实例--教你实现扑克牌洗牌功能
2014/05/15 Javascript
使用js实现的简单拖拽效果
2015/03/18 Javascript
JQuery选择器、过滤器大整理
2015/05/26 Javascript
JavaScript中Array对象用法实例总结
2016/11/29 Javascript
Angular2下使用pdf插件的方法详解
2017/04/29 Javascript
jQuery为某个div加入行样式
2017/06/09 jQuery
vue.js实现简单轮播图效果
2017/10/10 Javascript
微信小程序loading组件显示载入动画用法示例【附源码下载】
2017/12/09 Javascript
node简单实现一个更改头像功能的示例
2017/12/29 Javascript
JavaScript原型对象、构造函数和实例对象功能与用法详解
2018/08/04 Javascript
微信小程序当前时间时段选择器插件使用方法详解
2018/12/28 Javascript
微信小程序下拉菜单效果的实例代码
2019/05/14 Javascript
详解JWT token心得与使用实例
2019/08/02 Javascript
解决vue初始化项目时,一直卡在Project description上的问题
2019/10/31 Javascript
[17:36]VG战队纪录片
2014/08/21 DOTA
在Python的Django框架中实现Hacker News的一些功能
2015/04/17 Python
Ubuntu 16.04 LTS中源码安装Python 3.6.0的方法教程
2016/12/27 Python
Python读取文件内容的三种常用方式及效率比较
2017/10/07 Python
Python 获得13位unix时间戳的方法
2017/10/20 Python
Python实现二维数组输出为图片
2018/04/03 Python
python实现比较文件内容异同
2018/06/22 Python
Python实现的删除重复文件或图片功能示例【去重】
2019/04/23 Python
Python终端输出彩色字符方法详解
2020/02/11 Python
Pytorch自定义Dataset和DataLoader去除不存在和空数据的操作
2021/03/03 Python
世界上第一个水枕头:Mediflow
2018/12/06 全球购物
介绍一下如何优化MySql
2016/12/20 面试题
计算机专业自荐信
2013/10/14 职场文书
应届大学生求职信
2013/12/01 职场文书
分层教学实施方案
2014/03/19 职场文书
小学红领巾广播稿(3篇)
2014/09/13 职场文书
Nginx反向代理多个服务器的实现方法
2021/03/31 Servers