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


相关推荐
Shootingmemory17 分钟前
自动化01
运维·自动化
苹果醋327 分钟前
golang 编程规范 - Effective Go 中文
java·运维·spring boot·mysql·nginx
小兜全糖(xdqt)30 分钟前
python中单例模式
开发语言·python·单例模式
Python数据分析与机器学习39 分钟前
python高级加密算法AES对信息进行加密和解密
开发语言·python
noravinsc1 小时前
python md5加密
前端·javascript·python
唯余木叶下弦声1 小时前
PySpark之金融数据分析(Spark RDD、SQL练习题)
大数据·python·sql·数据分析·spark·pyspark
心灵Haven1 小时前
CentOS 7乱码问题如何解决?
linux·运维·centos
程序媛徐师姐1 小时前
Python基于Django的社区爱心养老管理系统设计与实现【附源码】
python·django·社区爱心养老·社区爱心养老管理系统·python社区养老管理系统·社区养老·社区养老管理系统
__pop_1 小时前
记录一次 centos 启动失败
linux·运维·服务器·centos
狂爱代码的码农1 小时前
在centos上编译安装opensips【初级-默认安装】
linux·运维·centos