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


相关推荐
Karoku06622 分钟前
【自动化部署】Ansible循环
linux·运维·数据库·docker·容器·自动化·ansible
m0_6879146326 分钟前
docker简单命令
运维
赵钰老师27 分钟前
遥感影像目标检测:从CNN(Faster-RCNN)到Transformer(DETR
pytorch·python·深度学习·目标检测·机器学习·cnn·transformer
一点见解32 分钟前
keepalived踩坑记录
linux·运维
阿猿先森43 分钟前
Python获取当前系统中可用的串口设备
linux·网络·python
KeyBordkiller44 分钟前
OpenWRT——官方镜像安装Docker(网络环境需设置)并配置Sun-Panel
运维·docker·容器
数据小小爬虫1 小时前
如何利用Python爬虫获得1688按关键字搜索商品
开发语言·爬虫·python
右恩1 小时前
【二维码美化】
服务器·前端·python·学习
jmoych1 小时前
我在华为的安全日常
大数据·运维·网络·安全·华为·架构·云计算