使用 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 相关文章推荐
pygame学习笔记(2):画点的三种方法和动画实例
Apr 15 Python
python实现复制整个目录的方法
May 12 Python
Python实现短网址ShortUrl的Hash运算实例讲解
Aug 10 Python
Python 给屏幕打印信息加上颜色的实现方法
Apr 24 Python
python issubclass 和 isinstance函数
Jul 25 Python
Python遍历字典方式就实例详解
Dec 28 Python
浅谈python元素如何去重,去重后如何保持原来元素的顺序不变
Feb 28 Python
使用sklearn的cross_val_score进行交叉验证实例
Feb 28 Python
使用python采集Excel表中某一格数据
May 14 Python
pandas dataframe 中的explode函数用法详解
May 18 Python
python文件读取失败怎么处理
Jun 23 Python
django如何自定义manage.py管理命令
Apr 27 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
B2K与车机的中波PK
2021/03/02 无线电
实现 win2003 下 mysql 数据库每天自动备份
2006/12/06 PHP
基于prototype的validation.js发布2.3.4新版本,让你彻底脱离表单验证的烦恼
2006/12/06 Javascript
javascript 全选与全取消功能的实现代码
2012/12/23 Javascript
扩展JS Date对象时间格式化功能的小例子
2013/12/02 Javascript
JS与C#编码解码
2013/12/03 Javascript
登陆成功后自动计算秒数执行跳转
2014/01/23 Javascript
javascript中 try catch用法
2015/08/16 Javascript
AngularJs中route的使用方法和配置
2016/02/04 Javascript
详解Node.js模块间共享数据库连接的方法
2016/05/24 Javascript
JavaScript数据结构之二叉树的遍历算法示例
2017/04/13 Javascript
js匿名函数使用&传参(实例)
2017/09/08 Javascript
Angular4绑定html内容出现警告的处理方法
2017/11/03 Javascript
实例分析JS与Node.js中的事件循环
2017/12/12 Javascript
javascript实现计算指定范围内的质数示例
2018/12/29 Javascript
从组件封装看Vue的作用域插槽的实现
2019/02/12 Javascript
layui的面包屑或者表单不显示的解决方法
2019/09/05 Javascript
Element Backtop回到顶部的具体使用
2020/07/27 Javascript
[03:40]DOTA2亚洲邀请赛小组赛第二日 赛事回顾
2015/01/31 DOTA
[49:40]2018DOTA2亚洲邀请赛小组赛 A组加赛 TNC vs Newbee
2018/04/03 DOTA
pyqt和pyside开发图形化界面
2014/01/22 Python
解析Python中while true的使用
2015/10/13 Python
python实现单线程多任务非阻塞TCP服务端
2017/06/13 Python
keras.layer.input()用法说明
2020/06/16 Python
容易被忽略的Python内置类型
2020/09/03 Python
美国知名男士服饰品牌:Brooks Brothers(布克兄弟)
2016/08/25 全球购物
Skyscanner英国:苏格兰的全球三大领先航班搜索服务之一
2017/11/09 全球购物
联想瑞士官方网站:Lenovo Switzerland
2017/11/19 全球购物
北京天润融通.net面试题笔试题
2012/02/20 面试题
行政部岗位职责范本
2014/03/13 职场文书
如何写自我评价?自我评价写什么好?
2014/03/14 职场文书
伦敦奥运会口号
2014/06/13 职场文书
2014年9.18纪念日演讲稿
2014/09/14 职场文书
加薪通知
2015/04/25 职场文书
企业战略合作意向书
2015/05/08 职场文书
解析Java中的static关键字
2021/06/14 Java/Android