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 相关文章推荐
Pthon批量处理将pdb文件生成dssp文件
Jun 21 Python
浅谈Python数据类型之间的转换
Jun 08 Python
Python引用类型和值类型的区别与使用解析
Oct 17 Python
python导入csv文件出现SyntaxError问题分析
Dec 15 Python
python使用循环打印所有三位数水仙花数的实例
Nov 13 Python
10分钟教你用Python实现微信自动回复功能
Nov 28 Python
详解用python自制微信机器人,定时发送天气预报
Mar 25 Python
获取Pytorch中间某一层权重或者特征的例子
Aug 17 Python
pytorch中的embedding词向量的使用方法
Aug 18 Python
Python print不能立即打印的解决方式
Feb 19 Python
Django media static外部访问Django中的图片设置教程
Apr 07 Python
Django修改app名称和数据表迁移方案实现
Sep 17 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
全国FM电台频率大全 - 18 湖南省
2020/03/11 无线电
德生S2000电路分析
2021/03/02 无线电
PHP结合jQuery插件ajaxFileUpload实现异步上传文件实例
2020/08/17 PHP
php获取文件后缀的9种方法
2016/03/22 PHP
php实现的中秋博饼游戏之绘制骰子图案功能示例
2017/11/06 PHP
discuz论坛更换域名,详细文件修改步骤
2020/12/09 PHP
js的with语句使用方法
2007/09/21 Javascript
JS获取dom 对象 ajax操作 读写cookie函数
2009/11/18 Javascript
向大师们学习Javascript(视频与PPT)
2009/12/27 Javascript
jquery获取特定name所有选中的checkbox,支持IE9标准模式
2013/03/18 Javascript
jQuery插件开发的两种方法及$.fn.extend的详解
2014/01/16 Javascript
javascript+html5实现绘制圆环的方法
2015/07/28 Javascript
JQuery EasyUI的使用
2016/02/24 Javascript
微信小程序 选择器(时间,日期,地区)实例详解
2016/11/16 Javascript
jquery Easyui Datagrid实现批量操作(编辑,删除,添加)
2017/02/20 Javascript
JS中使用textPath实现线条上的文字
2017/12/25 Javascript
微信小程序登录对接Django后端实现JWT方式验证登录详解
2019/07/29 Javascript
js实现tab栏切换效果
2020/08/02 Javascript
Python语言的12个基础知识点小结
2014/07/10 Python
简单介绍Python中的filter和lambda函数的使用
2015/04/07 Python
Python数据结构之哈夫曼树定义与使用方法示例
2018/04/22 Python
用python处理MS Word的实例讲解
2018/05/08 Python
Python爬虫框架scrapy实现downloader_middleware设置proxy代理功能示例
2018/08/04 Python
使用Python检测文章抄袭及去重算法原理解析
2019/06/14 Python
Python调用graphviz绘制结构化图形网络示例
2019/11/22 Python
Python3开发实例之非关系型图数据库Neo4j安装方法及Python3连接操作Neo4j方法实例
2020/03/18 Python
HTML5本地存储之Database Storage应用介绍
2013/01/06 HTML / CSS
推荐10个HTML5响应式框架
2016/02/25 HTML / CSS
英国经典球衣网站:Classic Football Shirts
2017/05/20 全球购物
商务英语毕业生自荐信范文
2013/11/08 职场文书
中学生获奖感言
2014/02/04 职场文书
新品发布会主持词
2014/04/02 职场文书
优秀护士先进事迹
2014/05/08 职场文书
2014年党员创先争优承诺书
2014/05/29 职场文书
2015大学生暑期实习报告
2015/07/13 职场文书
运动会宣传稿50字
2015/07/23 职场文书