使用 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妹子图简单爬虫实例
Jul 07 Python
python正则表达式re之compile函数解析
Oct 25 Python
使用python 和 lint 删除项目无用资源的方法
Dec 20 Python
python配置grpc环境
Jan 01 Python
python3.7 sys模块的具体使用
Jul 22 Python
djano一对一、多对多、分页实例代码
Aug 16 Python
python 矢量数据转栅格数据代码实例
Sep 30 Python
python调用matplotlib模块绘制柱状图
Oct 18 Python
Pandas操作CSV文件的读写实现方法
Nov 13 Python
python 使用递归回溯完美解决八皇后的问题
Feb 26 Python
Python+MySQL随机试卷及答案生成程序的示例代码
Feb 01 Python
python实现MySQL指定表增量同步数据到clickhouse的脚本
Feb 26 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 define函数的使用说明
2008/08/27 PHP
wiki-shan写的php在线加密的解密程序
2008/09/07 PHP
php通过COM类调用组件的实现代码
2012/01/11 PHP
使用PHP Socket写的POP3类
2013/10/30 PHP
php调用云片网接口发送短信的实现方法
2017/10/25 PHP
PHP的mysqli_rollback()函数讲解
2019/01/23 PHP
Javacript实现颜色梯度变化和渐变的效果代码
2013/05/31 Javascript
固定网页背景图同时保持图片比例的思路代码
2013/08/15 Javascript
js 动态加载事件的几种方法总结
2013/12/25 Javascript
jQuery中:radio选择器用法实例
2015/01/03 Javascript
javascript中scrollTop详解
2015/04/13 Javascript
HTML5之WebSocket入门3 -通信模型socket.io
2015/08/21 Javascript
javascript针对cookie的基本操作实例详解
2015/11/30 Javascript
使用store来优化React组件的方法
2017/10/23 Javascript
关于Google发布的JavaScript代码规范你要知道哪些
2018/04/04 Javascript
对Vue table 动态表格td可编辑的方法详解
2018/08/28 Javascript
ES6知识点整理之函数对象参数默认值及其解构应用示例
2019/04/17 Javascript
详解Vue调用手机相机和相册以及上传
2019/05/05 Javascript
layui+SSM的数据表的增删改实例(利用弹框添加、修改)
2019/09/27 Javascript
Python程序员开发中常犯的10个错误
2014/07/07 Python
Python序列之list和tuple常用方法以及注意事项
2015/01/09 Python
python 遍历列表提取下标和值的实例
2018/12/25 Python
Python 旋转打印各种矩形的方法
2019/07/09 Python
python向图片里添加文字
2019/11/26 Python
python通过对字典的排序,对json字段进行排序的实例
2020/02/27 Python
如何卸载python插件
2020/07/08 Python
怎样实现H5+CSS3手指滑动切换图片的示例代码
2019/05/05 HTML / CSS
详解HTML5中CSS外观属性
2020/09/10 HTML / CSS
手机业务员岗位职责
2013/12/13 职场文书
县政府班子个人对照检查材料
2014/10/05 职场文书
2014年前台文员工作总结
2014/12/08 职场文书
党员剖析材料范文
2014/12/18 职场文书
《花钟》教学反思
2016/02/17 职场文书
导游词之海南天涯海角
2019/12/05 职场文书
Java spring单点登录系统
2021/09/04 Java/Android
JVM之方法返回地址详解
2022/02/28 Java/Android