Python键鼠操作自动化库PyAutoGUI简介

2023-10-27

PyAutoGUI是一个Python语言的键鼠自动化库,简单来说和按键精灵的功能一样。但是因为是Python的类库,所以可以使用Python代码配合一些其他类库完成更加强大的功能。下面让我为大家介绍一下吧。

安装

从pip安装即可。

pip install pyautogui

稍等一下安装就完毕了。

从pip安装类库

使用介绍

简单介绍一下PyAutoGUI的函数以及使用方法。

鼠标操作函数

操作鼠标点击的函数。

函数 简单说明
move(x,y)、 moveTo(x,y) 移动鼠标,前者移动相对位置,后者移动到指定位置
click(x,y)、doubleClick、rightClick 单击/双击/右击,无参版本在当前位置点击鼠标
drag(x,y)、dragTo(x,y) 拖动鼠标
mouseDown、mouseUp 按下按键,松开按键
scroll 向下滚动鼠标滚轮的函数

键盘操作函数

操作键盘按键的函数。

函数 简介
press(‘left’,press=3)
hotkey(‘ctrl’,‘s’) 按下Ctrl+S组合键
keyDown、keyUp 按下和松开键盘按键

提示框函数

PyAutoGUI可以显示提示框,这时候程序会暂停运行,直到用户点击提示框。

函数 简介
alert(text=’’,title=’’,button=[‘OK’,‘Cancle’]) 显示警告对话框
confirm() 显示确认对话框
prompt() 显示提示对话框
password() 显示密码输入对话框

屏幕截图和定位函数

截取屏幕的函数,也可以从屏幕中寻找匹配的图片,并返回其坐标。你可以事先保存一些按钮的截图,然后通过这种方式定位按钮的位置,然后点击。

函数 简介
screenshot(‘image.png’) 保存截图并返回截图,无参版本直接返回截图不保存
center(‘image.png’) 从屏幕上寻找图片位置,返回框位置
locateOnScreen(‘img’) 从屏幕寻找图片位置,直接返回坐标

简单例子

先来看看官网的画图例子,我把代码稍微改了一下。运行这个例子需要先打开一个画图窗口,并放到全屏,然后运行Python代码,迅速将画图程序切换到前台。这样就可以看到PyAutoGUI控制鼠标来绘制精确的直线了。

import pyautogui
import time

time.sleep(3)

distance = 100
pyautogui.moveTo(400, 300)
while distance > 0:
    pyautogui.drag(distance, 0, duration=0.1)   
    distance -= 5
    pyautogui.drag(0, distance, duration=0.1)   
    pyautogui.drag(-distance, 0, duration=0.1) 
    distance -= 5
    pyautogui.drag(0, -distance, duration=0.1)  

绘制出来的图片应该是这样的。

图片结果

如果要完成一些实际工作,难免会遇到识别点击复杂样式图片的场景。前面提到了截图和图片识别可以比较好的解决这个问题。这个例子需要先安装OpenCV库和opencv-python包,安装完毕之后就可以运行了。这里将win10计算器的几个按钮保存成图片,然后用PyAutoGUI的图片识别功能找到按钮的坐标,这样就可以无障碍的点击按钮,无需关心窗口的位置。特别提一点,下面的confidence参数需要安装了OpenCV才可以使用,它允许我们模糊匹配图片。

import pyautogui
import time

time.sleep(3)

# Windows计算器的按钮截图
five = '5.png'
eight = '8.png'
multiply = 'multiply.png'
equals = 'equals.png'

# 图片识别和点击的函数


def find_and_click(image):
    x, y = pyautogui.locateCenterOnScreen(image, confidence=0.9)
    pyautogui.click(x, y)


# 执行5*8=
find_and_click(five)
find_and_click(multiply)
find_and_click(eight)
find_and_click(equals)

这个例子的截图和代码都在我的github上,欢迎大家查看。

https://github.com/techstay/python-study/tree/master/pyautogui-sample
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python键鼠操作自动化库PyAutoGUI简介 的相关文章

  • 通过 Scrapy 抓取 Google Analytics

    我一直在尝试使用 Scrapy 从 Google Analytics 获取一些数据 尽管我是一个完全的 Python 新手 但我已经取得了一些进展 我现在可以通过 Scrapy 登录 Google Analytics 但我需要发出 AJAX
  • 在 python 程序中合并第三方库的最佳实践是什么?

    下午好 我正在为我的工作编写一个中小型Python程序 该任务需要我使用 Excel 库xlwt and xlrd 以及一个用于查询 Oracle 数据库的库 称为CX Oracle 我正在通过版本控制系统 即CVS 开发该项目 我想知道围
  • 将 saxon 与 python 结合使用

    我需要使用 python 处理 XSLT 目前我正在使用仅支持 XSLT 1 的 lxml 现在我需要处理 XSLT 2 有没有办法将 saxon XSLT 处理器与 python 一起使用 有两种可能的方法 设置一个 HTTP 服务 接受
  • 将数据从 python pandas 数据框导出或写入 MS Access 表

    我正在尝试将数据从 python pandas 数据框导出到现有的 MS Access 表 我想用已更新的数据替换 MS Access 表 在 python 中 我尝试使用 pandas to sql 但收到错误消息 我觉得很奇怪 使用 p
  • 将 Matplotlib 误差线放置在不位于条形中心的位置

    我正在 Matplotlib 中生成带有错误栏的堆积条形图 不幸的是 某些层相对较小且数据多样 因此多个层的错误条可能重叠 从而使它们难以或无法读取 Example 有没有办法设置每个误差条的位置 即沿 x 轴移动它 以便重叠的线显示在彼此
  • OpenCV Python cv2.mixChannels()

    我试图将其从 C 转换为 Python 但它给出了不同的色调结果 In C Transform it to HSV cvtColor src hsv CV BGR2HSV Use only the Hue value hue create
  • Django:按钮链接

    我是一名 Django 新手用户 尝试创建一个按钮 单击该按钮会链接到我网站中的另一个页面 我尝试了一些不同的例子 但似乎没有一个对我有用 举个例子 为什么这不起作用
  • 从字符串中删除识别的日期

    作为输入 我有几个包含不同格式日期的字符串 例如 彼得在16 45 我的生日是1990年7月8日 On 7 月 11 日星期六我会回家 I use dateutil parser parse识别字符串中的日期 在下一步中 我想从字符串中删除
  • 如何使用 Ansible playbook 中的 service_facts 模块检查服务是否存在且未安装在服务器中?

    我用过service facts检查服务是否正在运行并启用 在某些服务器中 未安装特定的软件包 现在 我如何知道这个特定的软件包没有安装在该特定的服务器上service facts module 在 Ansible 剧本中 它显示以下错误
  • 使用 on_bad_lines 将 pandas.read_csv 中的无效行写入文件

    我有一个 CSV 文件 我正在使用 Python 来解析该文件 我发现文件中的某些行具有不同的列数 001 Snow Jon 19801201 002 Crom Jake 19920103 003 Wise Frank 19880303 l
  • 如何从网页中嵌入的 Tableau 图表中抓取工具提示值

    我试图弄清楚是否有一种方法以及如何使用 python 从网页中的 Tableau 嵌入图形中抓取工具提示值 以下是当用户将鼠标悬停在条形上时带有工具提示的图表示例 我从要从中抓取的原始网页中获取了此网址 https covid19 colo
  • Spark KMeans 无法处理大数据吗?

    KMeans 有几个参数training http spark apache org docs latest api python pyspark mllib html highlight kmeans pyspark mllib clus
  • Python pickle:腌制对象不等于源对象

    我认为这是预期的行为 但想检查一下 也许找出原因 因为我所做的研究结果是空白 我有一个函数可以提取数据 创建自定义类的新实例 然后将其附加到列表中 该类仅包含变量 然后 我使用协议 2 作为二进制文件将该列表腌制到文件中 稍后我重新运行脚本
  • 从 Flask 访问 Heroku 变量

    我已经使用以下命令在 Heroku 配置中设置了数据库变量 heroku config add server xxx xxx xxx xxx heroku config add user userName heroku config add
  • 在Python中获取文件描述符的位置

    比如说 我有一个原始数字文件描述符 我需要根据它获取文件中的当前位置 import os psutil some code that works with file lp lib open path to file p psutil Pro
  • 在f字符串中转义字符[重复]

    这个问题在这里已经有答案了 我遇到了以下问题f string gt gt gt a hello how to print hello gt gt gt f a a gt gt gt f a File
  • 如何在Python中对类别进行加权随机抽样

    给定一个元组列表 其中每个元组都包含一个概率和一个项目 我想根据其概率对项目进行采样 例如 给出列表 3 a 4 b 3 c 我想在 40 的时间内对 b 进行采样 在 python 中执行此操作的规范方法是什么 我查看了 random 模
  • 向 Altair 图表添加背景实心填充

    I like Altair a lot for making graphs in Python As a tribute I wanted to regenerate the Economist graph s in Mistakes we
  • 每个 X 具有多个 Y 值的 Python 散点图

    我正在尝试使用 Python 创建一个散点图 其中包含两个 X 类别 cat1 cat2 每个类别都有多个 Y 值 如果每个 X 值的 Y 值的数量相同 我可以使用以下代码使其工作 import numpy as np import mat
  • 从列表指向字典变量

    假设你有一个清单 a 3 4 1 我想用这些信息来指向字典 b 3 4 1 现在 我需要的是一个常规 看到该值后 在 b 的位置内读写一个值 我不喜欢复制变量 我想直接改变变量b的内容 假设b是一个嵌套字典 你可以这样做 reduce di

随机推荐

  • 目标检测常见知识点

    文章目录 1 常见目标检测结构 2 四种需要知道的特征金字塔网络 3 Focal Loss 4 FCOS 5 YOLOX beat YOLOv5 6 VFnet 7 YOLO real time model for edge devices
  • 无法连接虚拟设备 ide1:0,因为主机上没有相应的设备。您要在每次开启此虚拟机时都尝试连接此虚拟设

    运行VMware 出现以上错误 ide1 0一般是虚拟机的光驱 配置默认选项是 使用物理驱动器 而宿主机可能没有光驱 改为 使用ISO映像文件 即可
  • stata时间序列分析_Stata:时间序列教程

    2021年寒假Stata研讨班 高级计量经济学及Stata应用研讨班 2021空间计量研讨班 空间计量及Geoda Stata ArcGis Matlab应用 来源 综合整理自 http dss princeton edu training
  • STM32F103编译环境安装

    1 安装KEIL 安装包链接 链接 https pan baidu com s 1yeguqiSoHmycVblptGuOSA 密码 j0ym 点击这个 只需点下一步安装即可 自定义安装目录 注意在全英文目录下 出现这个关闭就行了 2 安装
  • STL之equal函数

    template
  • Golang fasthttp 为什么你这么优秀

    最近 需要使用 http client 发送数据 网上都说 fasthttp 据说是目前golang性能最好的http库 相对于自带的net http 性能说是有10倍的提升 参考 https studygolang com article
  • Firefly AIO-3399ProC开发板刷ubuntu系统 安装rknntoolkit 1.6.0 + tensorflow 2.0 + pytorch 1.5.0

    AIO 3399Pro刷ubuntu系统同时配置rknntoolkit 1 6 0 环境 由于本人所做项目需要将轻量级的深度学习算法进行部署 故前些日子购买了核心板为RK3399的深度学习开发板 用起来固然没有NVIDIA的jetson开发
  • chatgpt赋能python:建立Python开发环境的详细指南

    建立Python开发环境的详细指南 对于想要成为一名Python开发工程师的人来说 建立一个良好的开发环境是非常重要的 在安装和配置Python的过程中 您可能会遇到许多问题 并可能会出现错误 但是 请不要担心 因为这篇文章提供了一份详细的
  • keepalived高可用实战与Nginx负载均衡视频教程

    微技术 学无止境 一个专注于分享各种教程 技术 文章 分享等资源 为大家的工作 学习 提供便利 前言 大家好 我是微技术 今天给大家分享一款推荐负载均衡的学习教程 让你架构技术更加提高一点 更多深入一些技术 视频教程 keepalived
  • android 动态数据抓取,mitmproxy抓取Keep热门动态-安卓APP抓包爬虫案例

    使用mitmproxy来抓取Keep首页热门动态 鳄鱼君也是费了一天的时间去测试 在这里需要提醒大家抓包不要使用Android系统超过7 0的手机 Android系统越高手机越安全 而我们的抓包很显然是不允许的 这就是为什么你在配置了手机证
  • ajax与javascript,jquery, jquery UI

    ajax就是使用javascript语言实现的一种与服务器异步通信的方式 其核心是xmlhttprequest 像谷歌地图这种应用 如果点击某个点 需要重新刷新页面的话 用户体验很不好 这样的场所使用ajax就非常的方便 jQuery是一个
  • css媒体查询改变上边距,html - CSS宽度和边距不会与媒体查询相加

    我正在建立一个博客布局 目标是以窗口为中心 以最大宽度和最小边距为窗口 以内容为中心 我使用max width和媒体查询的组合来设置一定阈值的边距 我试着把max width和fixedmargin left和margin right放在一
  • go get & go mod找不到包问题解决

    问题一 今天在云虚机中遇到了go get执行报错的问题 报错内容如下 试了ping百度正常 说明不是DNS的问题 执行go mod tidy同样报错 最后找到问题 将GOPROXY由https proxy golang org改为了http
  • SpringBoot:自动装配提速设计

    名词约定 配置类 指使用了 Configuration Component ComponentScan Import ImportResource Bean的类 SpringBoot的设计思想就是通过一个配置类导入多个项目范围内适用的配置类
  • 《零基础入门学习Python》第087讲:Pygame:播放声音和音效

    这节课我们来谈谈 Pygame 中的 播放声音和音效 因为几乎没有任何游戏是一声不吭的 多重的感官体验更能刺激玩家的神经 没有声音的游戏就好比 不蘸番茄的薯条 尽管如此 Pygame 对于声音的处理并不是太理想 我说的是如果你想用 Pyga
  • 线性代数学习笔记——行列式的性质及拉普拉斯定理——11. 拉普拉斯定理

    这节如果不看教学视频而只看PPT的话 很难理解 这充分说明了老师的重要性 1 拉普拉斯 Laplace定理 2 基本结论 三角 对角分块矩阵行列式的计算 3 拉普拉斯定理的应用示例 求行列式 4 分块矩阵的逆的求解
  • ansible批量添加用户账户密码

    一 批量添加root用户以及密码 首先批量添加root 账号密码 不用ssh copy id root ip地址 因为如果ip比较多的情况下 ssh脚本添加会特别的麻烦 步骤1 首先要配置ansible清单 远程主机的密码这里为 12345
  • Idea上传已有项目到git

    开发经常遇到的问题是开发初期没有建立GIT仓库 开发一段时间后 需要将已有代码上传到Git 怎么将已有项目与新建的Git仓库相关联呢 借助Idea可以轻松实现 1 首先使用Git命令行 git clone XXXXX git 将项目下载 2
  • JAVA控制台输出格式

    public class PrintFormat public static void main String args Console print format System out printf format args format为指
  • Python键鼠操作自动化库PyAutoGUI简介

    PyAutoGUI是一个Python语言的键鼠自动化库 简单来说和按键精灵的功能一样 但是因为是Python的类库 所以可以使用Python代码配合一些其他类库完成更加强大的功能 下面让我为大家介绍一下吧 安装 从pip安装即可 pip i