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 ORM框架SQLAlchemy学习笔记之数据查询实例
Jun 10 Python
Python迭代用法实例教程
Sep 08 Python
python使用PythonMagick将jpg图片转换成ico图片的方法
Mar 26 Python
通过Python来使用七牛云存储的方法详解
Aug 07 Python
python 实现删除文件或文件夹实例详解
Dec 04 Python
Python实现查找二叉搜索树第k大的节点功能示例
Jan 24 Python
Python 实现文件打包、上传与校验的方法
Feb 13 Python
python print出共轭复数的方法详解
Jun 25 Python
解决Django加载静态资源失败的问题
Jul 28 Python
浅谈Python中(&,|)和(and,or)之间的区别
Aug 07 Python
python3 下载网络图片代码实例
Aug 27 Python
python生成13位或16位时间戳以及反向解析时间戳的实例
Mar 03 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
手把手教你打印出PDF(关于fpdf的简单应用)
2013/06/25 PHP
CodeIgniter框架过滤HTML危险代码
2014/06/12 PHP
php示例详解Constructor Prototype Pattern 原型模式
2015/10/15 PHP
JQuery插件Style定制化方法的分析与比较
2012/05/03 Javascript
JavaScript可否多线程? 深入理解JavaScript定时机制
2012/05/23 Javascript
firefox下jquery ajax返回object XMLDocument处理方法
2014/01/26 Javascript
用原生JS获取CLASS对象(很简单实用)
2014/10/15 Javascript
纯JavaScript基于notie.js插件实现消息提示特效
2016/01/18 Javascript
Js与Jq获取浏览器和对象值的方法
2016/03/18 Javascript
jquery设置表单元素为不可用的简单代码
2016/07/04 Javascript
javascript系统时间设置操作示例
2019/06/17 Javascript
layui添加动态菜单与选项卡
2019/07/26 Javascript
vue props对象validator自定义函数实例
2019/11/13 Javascript
uni-app如何实现增量更新功能
2020/01/03 Javascript
[01:20]DOTA2上海特级锦标赛现场采访:谁的ID最受青睐
2016/03/25 DOTA
分析在Python中何种情况下需要使用断言
2015/04/01 Python
Python模糊查询本地文件夹去除文件后缀的实例(7行代码)
2017/11/09 Python
python中使用iterrows()对dataframe进行遍历的实例
2018/06/09 Python
基于python实现语音录入识别代码实例
2020/01/17 Python
利用jupyter网页版本进行python函数查询方式
2020/04/14 Python
Python list和str互转的实现示例
2020/11/16 Python
关于django python manage.py startapp 应用名出错异常原因解析
2020/12/15 Python
Lookfantastic阿联酋官网:英国知名美妆护肤购物网站
2020/05/26 全球购物
军训的自我鉴定
2013/12/10 职场文书
小学毕业感言300字
2014/02/19 职场文书
节约能源标语
2014/06/17 职场文书
物理分数没达标检讨书
2014/09/13 职场文书
批评与自我批评总结
2014/10/17 职场文书
2014年幼儿园小班工作总结
2014/12/04 职场文书
课外活动总结
2015/02/04 职场文书
绍兴鲁迅故居导游词
2015/02/09 职场文书
2015年新农村建设指导员工作总结
2015/07/24 职场文书
2015年教师节广播稿
2015/08/19 职场文书
2016年社区服务活动总结
2016/04/06 职场文书
python基础之文件操作
2021/10/24 Python
Redis keys命令的具体使用
2022/06/05 Redis