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 获取新浪微博的最新公共微博实例分享
Jul 03 Python
Python二叉搜索树与双向链表转换实现方法
Apr 29 Python
Python3中的列表,元组,字典,字符串相关知识小结
Nov 10 Python
Python编程scoketServer实现多线程同步实例代码
Jan 29 Python
Python cookbook(数据结构与算法)让字典保持有序的方法
Feb 18 Python
Python基于TCP实现会聊天的小机器人功能示例
Apr 09 Python
通过python将大量文件按修改时间分类的方法
Oct 17 Python
Python批处理更改文件名os.rename的方法
Oct 26 Python
Python Opencv实现图像轮廓识别功能
Mar 23 Python
关于ZeroMQ 三种模式python3实现方式
Dec 23 Python
pytorch显存一直变大的解决方案
Apr 08 Python
分析Python感知线程状态的解决方案之Event与信号量
Jun 16 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
Linux下 php5 MySQL5 Apache2 phpMyAdmin ZendOptimizer安装与配置[图文]
2008/11/18 PHP
php使用SAE原生Mail类实现各种类型邮件发送的方法
2016/10/10 PHP
学习ExtJS Column布局
2009/10/08 Javascript
dreamweaver 安装Jquery智能提示
2011/04/02 Javascript
在chrome浏览器中,防止input[text]和textarea在聚焦时出现黄色边框的解决方法
2011/05/24 Javascript
javascript模版引擎-tmpl的bug修复与性能优化分析
2011/10/23 Javascript
获取中文字符串的实际长度代码
2014/06/05 Javascript
浅谈Javascript中深复制
2014/12/01 Javascript
JavaScript中的类(Class)详细介绍
2014/12/30 Javascript
使用JQuery实现Ctrl+Enter提交表单的方法
2015/10/22 Javascript
jquery限定文本框只能输入数字(整数和小数)
2016/01/08 Javascript
Eclipse编辑jsp、js文件时卡死现象的解决办法汇总
2016/02/02 Javascript
给angular加上动画效遇到的问题总结
2016/02/17 Javascript
基于JS实现Android,iOS一个手势动画效果
2016/04/27 Javascript
想学习javascript JS和jQuery哪个重要 先学哪个
2016/12/11 Javascript
bootstrap PrintThis打印插件使用详解
2017/02/20 Javascript
jquery表单验证实例仿Toast提示效果
2017/03/03 Javascript
vue 2.0封装model组件的方法
2017/08/03 Javascript
详解VUE单页应用骨架屏方案
2019/01/17 Javascript
jQuery HTML设置内容和属性操作实例分析
2020/05/20 jQuery
JavaScript Dom实现轮播图原理和实例
2021/02/19 Javascript
使用python 获取进程pid号的方法
2014/03/10 Python
用实例分析Python中method的参数传递过程
2015/04/02 Python
使用相同的Apache实例来运行Django和Media文件
2015/07/22 Python
Python使用flask框架操作sqlite3的两种方式
2018/01/31 Python
Python使用jsonpath-rw模块处理Json对象操作示例
2018/07/31 Python
pytorch 数据处理:定义自己的数据集合实例
2019/12/31 Python
解决pyCharm中 module 调用失败的问题
2020/02/12 Python
Lime Crime官网:美国一家主打梦幻精灵系的彩妆品牌
2019/03/22 全球购物
狼和鹿教学反思
2014/02/05 职场文书
公司保密承诺书
2014/03/27 职场文书
优秀少先队员主要事迹材料
2014/05/28 职场文书
献爱心大型公益活动策划方案
2014/09/15 职场文书
习近平在党的群众路线教育实践活动总结大会上的讲话
2014/10/21 职场文书
高中生综合素质评价范文
2015/08/18 职场文书
幼儿园大班教学反思
2016/03/02 职场文书