使用 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 ORM框架SQLAlchemy学习笔记之数据添加和事务回滚介绍
Jun 10 Python
python通过BF算法实现关键词匹配的方法
Mar 13 Python
python中的字典使用分享
Jul 31 Python
磁盘垃圾文件清理器python代码实现
Aug 24 Python
Python简单实现的代理服务器端口映射功能示例
Apr 08 Python
python获取交互式ssh shell的方法
Feb 14 Python
django与vue的完美结合_实现前后端的分离开发之后在整合的方法
Aug 12 Python
python:目标检测模型预测准确度计算方式(基于IoU)
Jan 18 Python
Python3 shelve对象持久存储原理详解
Mar 23 Python
Python通过Pillow实现图片对比
Apr 29 Python
matplotlib对象拾取事件处理的实现
Jan 14 Python
python链表类中获取元素实例方法
Feb 23 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函数重载的替代方法--伪重载详解
2015/05/08 PHP
PHP实现笛卡尔积算法的实例讲解
2019/12/22 PHP
基于jquery的从一个页面跳转到另一个页面的指定位置的实现代码(带平滑移动的效果)
2011/05/24 Javascript
自己动手制作jquery插件之自动添加删除行功能介绍
2011/10/14 Javascript
javascript延时加载之defer测试
2012/12/28 Javascript
javascript:window.open弹出窗口的位置问题
2014/03/18 Javascript
Jquery网页内滑动缓冲导航的实现代码
2015/04/05 Javascript
jQuery+CSS3折叠卡片式下拉列表框实现效果
2015/11/02 Javascript
js实现String.Fomat的实例代码
2016/09/02 Javascript
js 弹出虚拟键盘修改密码的简单实例
2016/10/10 Javascript
AngularJS前端页面操作之用户修改密码功能示例
2017/03/27 Javascript
jQuery+vue.js实现的九宫格拼图游戏完整实例【附源码下载】
2017/09/12 jQuery
NodeJS搭建HTTP服务器的实现步骤
2018/10/12 NodeJs
angularjs1.X 重构controller 的方法小结
2019/08/15 Javascript
使用axios请求接口,几种content-type的区别详解
2019/10/29 Javascript
node.js express捕获全局异常的三种方法实例分析
2019/12/27 Javascript
python 接口_从协议到抽象基类详解
2017/08/24 Python
Python编程二分法实现冒泡算法+快速排序代码示例
2018/01/15 Python
使用python生成目录树
2018/03/29 Python
python 筛选数据集中列中value长度大于20的数据集方法
2018/06/14 Python
解决pycharm运行出错,代码正确结果不显示的问题
2018/11/30 Python
python3.6使用urllib完成下载的实例
2018/12/19 Python
python后端接收前端回传的文件方法
2019/01/02 Python
Python实现的登录验证系统完整案例【基于搭建的MVC框架】
2019/04/12 Python
Python2.x与3​​.x版本有哪些区别
2020/07/09 Python
Python利用matplotlib绘制散点图的新手教程
2020/11/05 Python
Appium+Python实现简单的自动化登录测试的实现
2021/01/26 Python
大学校园活动策划书
2014/02/04 职场文书
班长自荐书范文
2014/02/11 职场文书
人事专员的职责
2014/02/26 职场文书
班干部演讲稿
2014/04/24 职场文书
人力资源管理毕业生自荐信
2014/06/26 职场文书
花田少年史观后感
2015/06/16 职场文书
mysql部分操作
2021/04/05 MySQL
PHP遍历数组的6种方式总结
2021/11/17 PHP
Redis实现分布式锁的五种方法详解
2022/06/14 Redis