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

一、安装PyAutoGUI

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

bash 复制代码
pip install pyautogui

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

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

二、基本功能

  1. 获取鼠标当前坐标

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

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

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

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

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

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

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

      python 复制代码
      pyautogui.click()
    • 在指定位置点击鼠标左键:

      python 复制代码
      pyautogui.click(x=100, y=150)
    • 右键点击和双击:

      python 复制代码
      pyautogui.rightClick(x=100, y=150)
      pyautogui.doubleClick(x=100, y=150)
  6. 滚动鼠标滚轮

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

    • 输入字符串:

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

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

三、高级功能

  1. 故障保险(Fail-Safe)

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

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

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

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

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

    • 截屏:

      python 复制代码
      screenshot = pyautogui.screenshot()
      screenshot.save('screenshot.png')
    • 查找图像位置:

      python 复制代码
      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.")
    • 查找所有匹配图像的位置:

      python 复制代码
      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的基本和高级功能,并利用它来实现各种自动化任务。


相关推荐
winfredzhang1 小时前
如何使用 python 中的 Pillow 创建可自定义的图标生成器
python·pillow·图标·png
qq_273900231 小时前
pytorch detach方法介绍
人工智能·pytorch·python
white.tie2 小时前
linux配置nginx
linux·运维·nginx
虞书欣的62 小时前
Python小游戏24——小恐龙躲避游戏
开发语言·python·游戏·小程序·pygame
FHYAAAX2 小时前
【机器学习】任务十:从函数分析到机器学习应用与BP神经网络
开发语言·python
PyAIGCMaster2 小时前
python环境中,敏感数据的存储与读取问题解决方案
服务器·前端·python
dessler2 小时前
云计算&虚拟化-kvm创建网桥(bridge)
linux·运维·云计算
pumpkin845142 小时前
客户端发送http请求进行流量控制
python·网络协议·http
smj2302_796826523 小时前
用枚举算法解决LeetCode第3348题最小可整除数位乘积II
python·算法·leetcode