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基于hashlib模块的文件MD5一致性加密验证示例
Feb 10 Python
python爬取各类文档方法归类汇总
Mar 22 Python
python处理数据,存进hive表的方法
Jul 04 Python
对Python Pexpect 模块的使用说明详解
Feb 14 Python
Python使用到第三方库PyMuPDF图片与pdf相互转换
May 03 Python
django迁移数据库错误问题解决
Jul 29 Python
Python3使用PySynth制作音乐的方法
Sep 09 Python
python子线程退出及线程退出控制的代码
Oct 16 Python
pytorch之添加BN的实现
Jan 06 Python
tensorflow 环境变量设置方式
Feb 06 Python
python GUI库图形界面开发之PyQt5窗口背景与不规则窗口实例
Feb 25 Python
python井字棋游戏实现人机对战
Apr 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,不用COM,生成excel文件
2006/10/09 PHP
有关PHP性能优化的介绍
2013/06/20 PHP
Discuz7.2版的faq.php SQL注入漏洞分析
2014/08/06 PHP
ThinkPHP模板中数组循环实例
2014/10/30 PHP
浅谈PHP解析URL函数parse_url和parse_str
2014/11/11 PHP
通过php修改xml文档内容的方法
2015/01/23 PHP
利用“多说”制作留言板、评论系统
2015/07/14 PHP
ThinkPHP3.2.1图片验证码实现方法
2016/08/19 PHP
php表单加入Token防止重复提交的方法分析
2016/10/10 PHP
jQuery EasyUI API 中文文档 - Spinner微调器使用
2011/10/21 Javascript
js时间日期和毫秒的相互转换
2013/02/22 Javascript
Jquery的hide及toggle方法让超链接慢慢消失
2013/09/06 Javascript
jQuery EasyUI 布局之动态添加tabs标签页
2015/11/18 Javascript
angularjs实现文字上下无缝滚动特效代码
2016/09/04 Javascript
Vue.js路由组件vue-router使用方法详解
2016/12/02 Javascript
node.js学习之交互式解释器REPL详解
2016/12/08 Javascript
轻松学习Javascript闭包
2017/03/01 Javascript
jQuery简易时光轴实现方法示例
2017/03/13 Javascript
fetch 使用及如何接收JS传值
2017/11/11 Javascript
微信小程序实现滴滴导航tab切换效果
2018/07/24 Javascript
在Vue项目中取消ESLint代码检测的步骤讲解
2019/01/27 Javascript
产制造追溯系统之通过微信小程序实现移动端报表平台
2019/06/03 Javascript
layui对工具条进行选择性的显示方法
2019/09/19 Javascript
python使用append合并两个数组的方法
2015/04/28 Python
Python的包管理器pip更换软件源的方法详解
2016/06/20 Python
python3实现字符串操作的实例代码
2019/04/16 Python
Python如何使用argparse模块处理命令行参数
2019/12/11 Python
Pytorch Tensor 输出为txt和mat格式方式
2020/01/03 Python
Keras: model实现固定部分layer,训练部分layer操作
2020/06/28 Python
pytorch加载语音类自定义数据集的方法教程
2020/11/10 Python
日本即尚网:JSHOPPERS.com(支持中文)
2019/12/03 全球购物
高中美术教学反思
2014/01/19 职场文书
募捐倡议书怎么写
2014/05/14 职场文书
质量安全标语
2014/06/07 职场文书
军训拉歌口号
2014/06/13 职场文书
nginx优化的六点方法
2021/03/31 Servers