Python pyautogui模块实现鼠标键盘自动化方法详解


Posted in Python onFebruary 17, 2020

本文简单介绍如何使用 Python 的 pyautogui 模块实现鼠标的自动移动以及键盘的自行输入. 该模块不是 Python 自带的, 因此执行以下命令进行安装

# pyautogui模块依赖image模块,没有image会报ImportError: No module named 'PIL'错误

pip install image

pip install pyautogui

官方文档介绍:https://pyautogui.readthedocs.io/en/latest/

使用 pyautogui 模块控制鼠标的移动

size(): 用于获取屏幕分辨率

import pyautogui
 
print(pyautogui.size())

moveTo(): 用于鼠标的移动

pyautogui.moveTo(100,100,duration=1)

这段代码调用了 moveTo() 函数, 其接受 x, y 坐标作为参数, 还有一个可选的持续时间参数. 该函数将鼠标指针从当前位置移动到 (x, y) 坐标指定的位置, 移动花费的时间由持续时间参数指定. 保存并运行该 Python 脚本, 你将看到, 鼠标指针像被施了魔法一样, 从当前位置花 1 秒钟时间移动到坐标位置 (100, 100).

moveRel(): 根据当前位置, 相对移动鼠标指针

pyautogui.moveRel(0,300,duration=1)

这段代码将鼠标指针从原位置相对地移动 (0, 300) 个像素点 (译注: 即向下移动 300 像素). 比如说, 运行代码之前, 鼠标指针在 (1000, 300), 那么代码运行之后, 鼠标指针将移动到 (1000, 600), 耗时 1 秒.

position(): 获取当前鼠标指针的位置

print(pyautogui.position())

输出: 程序执行时的鼠标所在的位置坐标.

click(): 用于控制鼠标点击和拖拽

pyautogui.click(370,120)

在(370,120)的位置模拟鼠标点击,其中click还有一个参数动作button,默认为'lest',当button='right'时,可rightClick()效果一样(鼠标右键点击)

doubleClick() 双击

rightClick() 右击

有两个与鼠标拖拽操作相关的函数: dragTo 和 dragRel. 它们的行为与 moveTo 和 moveRel 类似, 区别在于拖拽操作在移动的过程中, 会保持鼠标左键被按下.

该功能可用于不同的场景, 比如移动对话框,或在 Windows 的画板程序中用铅笔工具自动绘图

import pyautogui
import time
 
time.sleep(5) # 5秒种时间切换到画板程序
 
pyautogui.moveTo(200,200,duration=1) # 鼠标移动到(200,200)的位置
 
pyautogui.dragRel(100,0,duration=1)
pyautogui.dragRel(0,100,duration=1)
pyautogui.dragRel(-100,0,duration=1)
pyautogui.dragRel(0,-100,duration=1)

scroll(): 滚屏函数接受像素数作为参数, 并用给定的像素数向上滚屏

pyautogui.scroll(200)

对选中的窗口进行向上滚屏200个像素点.当值为负数时,向下移动

typewrite(): 用于自动键入字符串, 只需将要键入的字符串传递给函数作为参数即可

pyautogui.click(100,200)
pyautogui.typewrite('hello word!')

假设文本区域位于屏幕 (100, 200) 的坐标位置, 那么这段代码将点击文本区域, 激活它, 并键入'hello word!'

传递键名: 可以向 typywrite() 函数传入分离的键名.

pyautogui.typewrite(['a','left','ctrlleft'])

这段代码等价于: 键入 "a", 然后敲击左方向键, 再敲击左 ctrl 键.

热键组合: hotkey() 可以模拟组合热键, 比如: ctrl-c, ctrl-a, ctrl-v 等

pyautogui.hotkey('ctrlleft','v')

模拟ctrl-v,复制功能

pyautogui.hotkey('ctrl', 'shift', 'esc')
#等价于
pyautogui.keyDown('ctrl')
pyautogui.keyDown('shift')
pyautogui.keyDown('esc')
pyautogui.keyUp('esc')
pyautogui.keyUp('shift')
pyautogui.keyUp('ctrl')

press() :键盘功能按键

pyautogui.press('enter') # press the Enter key
pyautogui.press('f1')   # press the F1 key
pyautogui.press('left')  # press the left arrow key

消息弹窗函数

如果你需要消息弹窗,通过单击OK暂停程序,或者向用户显示一些信息,消息弹窗函数就会有类似JavaScript的功能:

pyautogui.alert('这个消息弹窗是文字+OK按钮') # 返回OK 
pyautogui.confirm('这个消息弹窗是文字+OK+Cancel按钮') # 返回OK 或 Cancel
pyautogui.prompt('这个消息弹窗是让用户输入字符串,单击OK') # 返回输入的字符串

更多关于Python pyautogui模块的使用方法请查看下面的相关链接

Python 相关文章推荐
Python中转换角度为弧度的radians()方法
May 18 Python
详解Python的Django框架中inclusion_tag的使用
Jul 21 Python
Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
Mar 19 Python
Python网络编程基于多线程实现多用户全双工聊天功能示例
Apr 10 Python
Pycharm 实现下一个文件引用另外一个文件的方法
Jan 17 Python
详解python编译器和解释器的区别
Jun 24 Python
Python3多线程版TCP端口扫描器
Aug 31 Python
python程序中的线程操作 concurrent模块使用详解
Sep 23 Python
python 字典有序并写入json文件过程解析
Sep 30 Python
python 矢量数据转栅格数据代码实例
Sep 30 Python
PyQt使用QPropertyAnimation开发简单动画
Apr 02 Python
Python字典实现伪切片功能
Oct 28 Python
Matplotlib使用字符串代替变量绘制散点图的方法
Feb 17 #Python
关于tf.TFRecordReader()函数的用法解析
Feb 17 #Python
将数据集制作成VOC数据集格式的实例
Feb 17 #Python
将labelme格式数据转化为标准的coco数据集格式方式
Feb 17 #Python
开启Django博客的RSS功能的实现方法
Feb 17 #Python
Python3打包exe代码2种方法实例解析
Feb 17 #Python
Django 博客实现简单的全文搜索的示例代码
Feb 17 #Python
You might like
php下实现农历日历的代码
2007/03/07 PHP
PHP小教程之实现链表
2014/06/09 PHP
php获得网站访问统计信息类Compete API用法实例
2015/04/02 PHP
基于ThinkPHP5.0实现图片上传插件
2017/09/25 PHP
thinkphp整合系列之极验滑动验证码geetest功能
2019/06/18 PHP
js获取当前select 元素值的代码
2010/04/19 Javascript
jQuery学习笔记之jQuery的事件
2010/12/22 Javascript
html中的input标签的checked属性jquery判断代码
2012/09/19 Javascript
js判断生效时间不得大于失效时间的思路及代码
2013/04/23 Javascript
jQuery随便控制任意div隐藏的方法
2013/06/28 Javascript
jQuery ajaxForm()的应用
2016/10/14 Javascript
Nodejs高扩展性的模板引擎 functmpl简介
2017/02/13 NodeJs
Node.js中,在cmd界面,进入退出Node.js运行环境的方法
2018/05/12 Javascript
Vue Autocomplete 自动完成功能简单示例
2019/05/25 Javascript
Node.js 实现远程桌面监控的方法步骤
2019/07/02 Javascript
基于VSCode调试网页JavaScript代码过程详解
2020/07/20 Javascript
如何将Node.js中的回调转换为Promise
2020/11/10 Javascript
python连接mysql数据库示例(做增删改操作)
2013/12/31 Python
python开发之IDEL(Python GUI)的使用方法图文详解
2015/11/12 Python
详解设计模式中的工厂方法模式在Python程序中的运用
2016/03/02 Python
解决python super()调用多重继承函数的问题
2019/06/26 Python
python opencv对图像进行旋转且不裁剪图片的实现方法
2019/07/09 Python
使用sublime text3搭建Python编辑环境的实现
2021/01/12 Python
python利用后缀表达式实现计算器功能
2021/02/22 Python
利用SVG和CSS3来实现一个炫酷的边框动画
2015/07/22 HTML / CSS
html5 Canvas绘制线条 closePath()实例代码
2012/05/10 HTML / CSS
奥地利购买珠宝和手表网站:ELLA JUWELEN
2019/09/03 全球购物
如何开发一个JQuery插件
2016/07/28 面试题
入党积极分子思想汇报范文
2014/01/05 职场文书
捐款倡议书
2014/04/14 职场文书
2014年教学工作总结
2014/11/13 职场文书
2014年后勤管理工作总结
2014/12/01 职场文书
销售会议开幕词
2015/01/28 职场文书
python实现简单反弹球游戏
2021/04/12 Python
python Django框架快速入门教程(后台管理)
2021/07/21 Python
SpringBoot 集成短信和邮件 以阿里云短信服务为例
2022/04/22 Java/Android