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


相关推荐
web135085886352 小时前
Python大数据可视化:基于python的电影天堂数据可视化_django+hive
python·信息可视化·django
东方芷兰2 小时前
伯克利 CS61A 课堂笔记 11 —— Mutability
笔记·python
不会Hello World的小苗5 小时前
Java——列表(List)
java·python·list
m0_748235957 小时前
Python大数据可视化:基于Python的王者荣耀战队的数据分析系统设计与实现_flask+hadoop+spider
hadoop·python·flask
Dyan_csdn7 小时前
【Python项目】基于Python的Web漏洞挖掘系统
网络·python·安全·web安全
Minner-Scrapy7 小时前
DApp 开发入门指南
开发语言·python·web app
&小刘要学习&8 小时前
anaconda不显示jupyter了?
python·jupyter
jerry-898 小时前
jupyterhub_config配置文件内容
python
奔跑吧邓邓子8 小时前
【Python爬虫(36)】深挖多进程爬虫性能优化:从通信到负载均衡
开发语言·爬虫·python·性能优化·负载均衡·多进程
努力的小T8 小时前
使用 Docker 部署 Apache Spark 集群教程
linux·运维·服务器·docker·容器·spark·云计算