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 excel使用xlutils类库实现追加写功能的方法
May 02 Python
解决已经安装requests,却依然提示No module named requests问题
May 18 Python
Python for循环中的陷阱详解
Jul 13 Python
在Python中增加和插入元素的示例
Nov 01 Python
python 多线程中子线程和主线程相互通信方法
Nov 09 Python
Python上下文管理器用法及实例解析
Nov 11 Python
TensorFlow实现自定义Op方式
Feb 04 Python
Python Flask异步发送邮件实现方法解析
Aug 01 Python
Python抖音快手代码舞(字符舞)的实现方法
Feb 07 Python
Python爬虫之爬取哔哩哔哩热门视频排行榜
Apr 28 Python
openstack中的rpc远程调用的方法
Jul 09 Python
Python爬虫 简单介绍一下Xpath及使用
Apr 26 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
基于mysql的论坛(6)
2006/10/09 PHP
php自定义函数call_user_func和call_user_func_array详解
2011/07/14 PHP
PHP遍历数组的几种方法
2012/03/22 PHP
php获取远程图片体积大小的实例
2013/11/12 PHP
PHP入门之常量简介和系统常量
2014/05/12 PHP
php程序总是提示验证码输入有误解决方案
2015/01/07 PHP
ajax调用返回php接口返回json数据的方法(必看篇)
2017/05/05 PHP
PHP 进度条函数的简单实例
2017/09/19 PHP
JavaScript版TAB选项卡效果实例
2013/08/16 Javascript
7个JS基础知识总结
2014/03/05 Javascript
Jquery实现Div上下移动示例
2014/04/23 Javascript
javascript中call,apply,bind的用法对比分析
2015/02/12 Javascript
使用Ajax与服务器(JSON)通信实例
2016/11/04 Javascript
Vue2.0 slot分发内容与props验证的方法
2017/12/12 Javascript
PWA介绍及快速上手搭建一个PWA应用的方法
2019/01/27 Javascript
如何自动化部署项目?折腾服务器之旅~
2019/04/16 Javascript
vue.js中使用echarts实现数据动态刷新功能
2019/04/16 Javascript
详解python中xlrd包的安装与处理Excel表格
2016/12/16 Python
Python MySQL数据库连接池组件pymysqlpool详解
2017/07/07 Python
单链表反转python实现代码示例
2018/02/08 Python
python bmp转换为jpg 并删除原图的方法
2018/10/25 Python
将python图片转为二进制文本的实例
2019/01/24 Python
Python识别快递条形码及Tesseract-OCR使用详解
2019/07/15 Python
Django 拼接两个queryset 或是两个不可以相加的对象实例
2020/03/28 Python
Anaconda+vscode+pytorch环境搭建过程详解
2020/05/25 Python
Python 找出英文单词列表(list)中最长单词链
2020/12/14 Python
python中count函数知识点浅析
2020/12/17 Python
python Scrapy爬虫框架的使用
2021/01/21 Python
如何使用amaze ui的分页样式封装一个通用的JS分页控件
2020/08/21 HTML / CSS
数学高效课堂实施方案
2014/03/29 职场文书
小学课外活动总结
2014/07/09 职场文书
校长师德表现自我评价
2015/03/04 职场文书
《领导干部从政道德启示录》学习心得体会
2016/01/20 职场文书
Nginx同一个域名配置多个项目的实现方法
2021/03/31 Servers
pandas提升计算效率的一些方法汇总
2021/05/30 Python
忆童年!用Python实现愤怒的小鸟游戏
2021/06/07 Python