「Py」模块篇 之 PyAutoGUI库自动化图形用户界面库

在这里插入图片描述

✨博客主页
何曾参静谧的博客
📌文章专栏
「Py」Python程序设计
📚全部专栏
「Win」Windows程序设计「IDE」集成开发环境「UG/NX」BlockUI集合
「C/C++」C/C++程序设计「DSA」数据结构与算法「UG/NX」NX二次开发
「QT」QT5程序设计「File」数据文件格式「UG/NX」NX定制开发
「Py」Python程序设计「Math」探秘数学世界「PK」Parasolid函数说明

目录

    • PyAutoGUI使用教程
      • 一、安装PyAutoGUI
      • 二、基本功能
      • 三、高级功能
      • 四、注意事项

PyAutoGUI使用教程

PyAutoGUI是一个用于自动化图形用户界面(GUI)操作的Python库,可以模拟鼠标移动、点击、拖拽以及键盘按键输入等操作。此外,它还提供了截屏、消息弹窗和延时控制等功能,适用于各种GUI任务的自动化。以下是一篇关于PyAutoGUI的详细使用教程。

一、安装PyAutoGUI

PyAutoGUI可以通过pip进行安装。在命令行或终端中运行以下命令:

pip install pyautogui

在Windows系统上,PyAutoGUI没有任何依赖,可以直接使用。而在macOS和Linux系统上,则需要安装相应的依赖库。

  • 对于macOS,需要安装pyobjc-core和pyobjc模块:
pip install pyobjc-core
pip install pyobjc
pip install pyautogui
  • 对于Linux,需要安装python3-xlib(或python-xlib对于Python 2)和Pillow模块:
sudo apt-get install python3-xlib
pip install pillow
pip install pyautogui

二、基本功能

  1. 获取鼠标当前坐标

    import pyautogui
    currentMouseX, currentMouseY = pyautogui.position()
    print(f"Current mouse position: ({currentMouseX}, {currentMouseY})")
    
  2. 获取屏幕尺寸

    screenWidth, screenHeight = pyautogui.size()
    print(f"Screen size: ({screenWidth}x{screenHeight})")
    
  3. 判断指定坐标是否在屏幕内

    onScreen = pyautogui.onScreen(100, 100)
    print(f"Is the coordinate (100, 100) on the screen? {onScreen}")
    
  4. 移动鼠标

    • 在指定时间内将鼠标移动到指定坐标:

      pyautogui.moveTo(100, 150, duration=1)  # 1秒内移动到(100, 150)
      
    • 相对于当前位置移动鼠标:

      pyautogui.moveRel(50, 0, duration=0.5)  # 0.5秒内向右移动50像素
      
  5. 点击鼠标

    • 在当前位置点击鼠标左键:

      pyautogui.click()
      
    • 在指定位置点击鼠标左键:

      pyautogui.click(x=100, y=150)
      
    • 右键点击和双击:

      pyautogui.rightClick(x=100, y=150)
      pyautogui.doubleClick(x=100, y=150)
      
  6. 滚动鼠标滚轮

    pyautogui.scroll(200)  # 向上滚动200单位
    pyautogui.scroll(-200)  # 向下滚动200单位
    
  7. 键盘输入

    • 输入字符串:

      pyautogui.typewrite('Hello, world!', interval=0.1)  # 每个字符之间间隔0.1秒
      
    • 输入单个按键或组合键:

      pyautogui.press('enter')
      pyautogui.hotkey('ctrl', 'c')  # 复制操作
      

三、高级功能

  1. 故障保险(Fail-Safe)

    当启用故障保险模式时,如果将鼠标移动到屏幕左上角,PyAutoGUI将引发一个pyautogui.FailSafeException异常,从而中断程序。这是为了防止程序失控。

    pyautogui.FAILSAFE = True  # 启用故障保险模式(默认)
    # 如果需要禁用,则设置为False
    # pyautogui.FAILSAFE = False
    
  2. 全局延迟(PAUSE)

    通过设置pyautogui.PAUSE属性,可以为所有的PyAutoGUI函数增加延迟。这对于减缓自动化操作的速度、提高稳定性很有帮助。

    pyautogui.PAUSE = 1  # 设置全局延迟为1秒
    
  3. 截屏与图像识别

    PyAutoGUI使用Pillow/PIL库来处理图像。可以使用screenshot()函数进行截屏,并使用locateOnScreen()locateAllOnScreen()函数在屏幕上查找图像的位置。

    • 截屏:

      screenshot = pyautogui.screenshot()
      screenshot.save('screenshot.png')
      
    • 查找图像位置:

      button_pos = pyautogui.locateOnScreen('button.png')
      if button_pos:print(f"Button found at: {button_pos}")pyautogui.click(button_pos)
      else:print("Button not found.")
      
    • 查找所有匹配图像的位置:

      all_buttons = list(pyautogui.locateAllOnScreen('button.png'))
      for button_pos in all_buttons:pyautogui.click(button_pos)
      

四、注意事项

  1. 坐标系统

    PyAutoGUI的坐标系统以屏幕左上角为原点(0, 0),x轴向右增加,y轴向下增加。在多屏幕环境下,PyAutoGUI仅支持主屏幕的操作。

  2. 键盘输入焦点

    PyAutoGUI的键盘输入操作是基于当前焦点窗口的。在执行键盘输入操作前,请确保目标窗口处于焦点状态。可以使用pyautogui.click(x, y)先将鼠标点击到目标窗口。

  3. 避免干扰

    在自动化脚本执行期间,避免手动移动鼠标或进行键盘输入,以免干扰脚本的执行。

  4. 性能优化

    对于涉及到延迟的操作,可以使用time.sleep()函数来动态调整延迟时间,而不是仅依赖pyautogui.PAUSE属性。此外,在使用locateOnScreen()locateAllOnScreen()时,尽量缩小截屏区域,只包含关键元素,以提高查找速度。

通过以上教程的学习和实践,您可以掌握PyAutoGUI的基本和高级功能,并利用它来实现各种自动化任务。


在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/15044.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

打造透明、高效的分布式系统:通过 EMQX ECP 集成实现链路追踪功能

链路追踪作为一种用于监控和观察分布式系统中请求流动和性能的技术,在现代微服务架构中扮演着重要角色。 在复杂的分布式环境中,它可以记录并可视化跨多个服务与组件的完整请求路径,并提供每个服务节点上的执行时间,帮助开发人员…

sql数据库-聚合函数-DQL(类似Excel函数)

目录 聚合函数介绍 语法 举例 统计表中的所有女性员工 统计表中工作地点在北京的员工 聚合函数介绍 常用的聚合函数 函数功能count统计字段数量max最大值min最小值avg平均值sum求和 语法 SELECT 聚合函数(字段列表) FROM 表名; 举例 统计表中的所有女性员工 sele…

【C语言刷力扣】58.最后一个单词的长度

题目: 解题思路; 倒序遍历,先将末尾的空格过滤,再统计至第一个空格。 条件i > 0 放在前面先判断,条件s[i] ! 放后面,反之遇到单字符会溢出。 时间复杂度: 空间复杂度: int lengthOfLas…

【数据运营】数据资产私域运营:探索并实现数据价值变现的新途径

随着数字化浪潮的席卷,数据已成为现代企业的核心竞争力之一。然而,仅仅拥有数据并不足以在激烈的市场竞争中脱颖而出,关键在于如何有效地管理和运营这些数据资产,将其转化为实实在在的商业价值。本文将从数据资产私域运营的定义、…

360天擎终端安全管理 远程控制客户端终端进行的安全防护/终端管理:病毒查杀/插件管理/系统修复/漏洞管理等操作

文章目录 目录 文章目录 使用流程 小结 概要使用流程技术细节小结 概要 如果首页上出现只有5台。但是公司实际上有20台电脑。还有很多未进行安装360天擎的用户主机。我们下发指示通告内容。这个的话需要一个一个排查才能知道谁没有安装。可以查看终端管理页面看到主机IP知道已…

数字人直播骗局大起底!源码部署究竟有哪些优势?

随着数字人直播的应用频率不断上升,越来越多的人开始关注到了它所蕴含着的广阔前景和巨大收益潜力,于是,纷纷打听起了入局相关的事宜。而这也就让许多不法分子盯上了这一项目,并炮制出了各式各样的数字人直播骗局来收割韭菜。 其中…

OpenAI官方发布:利用ChatGPT提升写作的12条指南

近日,OpenAI官方发布了学生如何利用ChatGPT提升写作的12条指南,值得深入研究学习。 在如今AIGC应用爆发增长的时间点,如何充分利用生成式AI工具,如ChatGPT,有效切快速的提升写作和学习能力,成为每个学生、…

探索大型语言模型(LLMs)能否在不泄露私人信息的情况下联合其他大型语言模型共同解决问题

概述 谷歌的 Gemini Ultra(2023 年)和 OpenAI 的 GPT-4 (2023 年)等大规模语言模型在许多任务中都表现出了令人印象深刻的性能。然而,这些模型不仅推理成本高昂,而且运行于数据中心,而数据中心…

CloudDM Team Docker 版安装指南

CloudDM Team 是一款全新的国产自研数据库管理工具,在《全新的企业级数据库数据安全管控平台》 一文中全面介绍了其核心功能和特点。本文将会介绍如何在 Ubuntu Linux 中安装并初步使用这款数据库管理工具。 准备工作 安装 Docker CloudDM Team 安装过程中需要用…

第22天Linux下常用工具

目录 第 1 章 vim 编辑器 1.1 vim 安装 1.2 vim 的使用 1.3 vim 的 4 种工作模式 第 2 章 gcc 编译器 2.1 编译流程(以 main.c 为例) 2.2 gcc 的常用参数 2.3 进行多模块编译 第 3 章 动态库静态库的制作 3.1 库的作用 3.2 库的分类与特点 …

/// ts中的三斜线指令 | 前端

第一次看到注意到这行代码,不知道的还以为是注释呢,查了资料才知道这是typescript中的三斜线指令,那有什么作用呢? 1. 这行代码是TypeScript中的一个三斜线指令(Triple-Slash Directive),用于…

Schnorr 和 BLS 算法详解

Schnorr 签名和 BLS 签名在区块链技术中都有着重要的应用。它们各自具备独特的优势,使其在不同的区块链应用场景中得到广泛使用。 Schnorr签名算法 Schnorr签名算法是一种基于离散对数问题的数字签名算法, 由德国密码学家 克劳斯施诺尔 (Cl…

C++类和对象 - 拷贝构造, 赋值重载

拷贝构造函数 拷贝构造作用:一个已经存在的对象去初始化另一个要创建的对象 日常写代码中会出现如下场景: class Data { public:Data(int year, int month, int day) // 拷贝构造函数{this->_year year;this->_month month;this->_day day;} priva…

为什么咨询公司需要项目管理软件:7大关键优势

在咨询公司中,同时管理多个项目、客户和目标并非易事,尤其需要兼顾长期发展。项目管理软件就成为了各类项目型企业(包括咨询公司)的重要工具。 对于顾问来说,项目管理软件可以简化工作流程、增强客户关系并提高效率。本…

3大核心技术,免费开源的智能合同审查分析软件的技术介绍

本智能合同审查分析系统致力于解决法律领域中复杂文档与信息处理的难题,采用最先进的深度学习与自然语言处理(NLP)技术,提供精准的实体识别与关系抽取功能。系统基于BERT、GPT等主流模型,实现自动识别和关联法律文档中…

GitCode光引计划有奖征文大赛

一、活动介绍 GitCode平台汇聚了众多杰出的G-Star项目,它们犹如璀璨星辰,用各自的故事和成就,为后来者照亮前行的道路。我们诚邀广大开发者、项目维护者及爱好者,共同撰写并分享项目在GitCode平台上托管的体验,挖掘平…

UE4 Cook 从UAT传递参数给UE4Editor

需求 一句Cook的命令如下: ${EnginePath}/Engine/Build/BatchFiles/RunUAT.sh BuildCookRun -project${ClientPath}/${ProjectName}.uproject -noP4 -platformIOS -cooksinglepackage -client -clientconfig${CookConfig} -iterate -skipbuild -nocompile -NoMutex…

api驱动的云服务是什么意思?

API驱动的云服务是指利用API技术来驱动和提供云服务的模式。在这种模式下,云服务提供商会公开一系列的API接口,允许开发者或应用程序通过调用这些API来实现对云服务的访问和操作。API驱动的云服务是现代云计算技术的重要组成部分,API驱动的云…

Springboot 启动端口占用如何解决

Springboot 启动端口占用如何解决 1、报错信息如下 *************************** APPLICATION FAILED TO START ***************************Description:Web server failed to start. Port 9010 was already in use.Action:Identify and stop the process thats listening o…

【Rust调用Windows API】杀掉指定进程(包括兄弟进程、子进程、父进程)

前言 前面一篇文章写了使用Rust调用Windows API 获取正在运行的全部进程信息 ,本篇实现杀掉指定进程。 通过标准库可以管理当前进程创建的子进程,要 kill 掉子进程也比较容易,这里不赘述了,主要实现通过调用Windows API来杀掉兄…