Python--界面UI控制,模拟键鼠操作的模块pyautogui(超详细用法)

这篇具有很好参考价值的文章主要介绍了Python--界面UI控制,模拟键鼠操作的模块pyautogui(超详细用法)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、简介

PyAutoGUI是一个Python 第三方库,需要pip install 安装 。它允许我们通过编程方式模拟鼠标和键盘的操作,窗口操作,以及界面的截图匹配。由于它是照搬人的操作,底层没有套牢在Windows系统,所以它可以跨平台。

二、安装

通过pip命令可以轻松安装PyAutoGUI

pip install pyautogui -i https://pypi.tuna.tsinghua.edu.cn/simple

三、主要功能

  • 鼠标操作:PyAutoGUI可以模拟鼠标移动、点击、拖拽等操作,可以控制鼠标的位置和点击的坐标。
  • 键盘操作:PyAutoGUI可以模拟键盘按键和组合键的操作,如按下和释放按键、输入文本等。
  • 屏幕操作:PyAutoGUI集成了pyscreeze模块,可以直接调用函数截屏、查找指定图像的位置等
  • 延时控制:PyAutoGUI可以控制鼠标和键盘操作的延时,以确保操作的正确性和稳定性。
  • 窗口控制:PyautoGUI集成了pygetwindow模块,可以直接调用函数获取窗口信息、控制窗口大小、移动、关闭等

3.1、基础功能

获取鼠标当前位置

import pyautogui
print(pyautogui.position()) # Point(x=1964, y=1338)

获取屏幕大小 

import pyautogui
print(pyautogui.size())  # Size(width=3840, height=2160)

判断坐标是否在屏幕中

import pyautogui
print(pyautogui.onScreen(200, 200))
print(pyautogui.onScreen(2000, 4000))

3.2、GUI控制功能

自动防故障功能

默认这项功能为True,意味着:当鼠标的指针在屏幕的最坐上方,程序会报错;目的是为了防止程序无法停止;

import pyautogui
print(pyautogui.FAILSAFE)
pyautogui.FAILSAFE = False
print(pyautogui.FAILSAFE)

停顿功能

这个停顿只是在用pyautogui控制鼠标和键盘时生效,如果是执行一般功能的命令,则该停顿不生效

import pyautogui
pyautogui.PAUSE = 5
pyautogui.moveTo(200, 200, duration=1);pyautogui.moveTo(2000, 1000, duration=1)

3.3、鼠标控制功能

 控制移动鼠标

        移动到指定位置

import pyautogui
pyautogui.moveTo(100,300,duration=1)  #(100,300)是坐标, duration 的作用是设置移动时间,单位秒,所有的gui函数都有这个参数,而且都是可选参数 相对移动,按方向移动

         相对移动,按方向移动

import pyautogui
pyautogui.moveRel(100,500,duration=4)  # 第一个参数是左右移动像素值,第二个是上下移动像素值

控制鼠标点击

        单击鼠标

import pyautogui
pyautogui.click(10,10)  # 鼠标点击指定位置,默认左键
pyautogui.click(10,10,button='left')  # 单击左键
pyautogui.click(1000,300,button='right')  # 单击右键
pyautogui.click(1000,300,button='middle')  # 单击中间 

        双击鼠标

import pyautogui
pyautogui.doubleClick(10,10)  # 指定位置,双击左键
pyautogui.rightClick(10,10)  # 指定位置,双击右键
pyautogui.middleClick(10,10)  # 指定位置,双击中键 

        按下和释放分解:点击&释放

import pyautogui
pyautogui.mouseDown()
pyautogui.mouseUp() # 两句命令相当于pyautogui.press()

pyautogui.mouseDown(button='right') # 按下右键
pyautogui.mouseUp(button='right', x=100, y=200) # 移动到(100,200),释放右键

控制鼠标拖动

        拖动到指定位置

import pyautogui
pyautogui.dragTo(100,300,duration=1)  # 将鼠标拖动到指定的坐标

        拖动到相对位置,按方向拖动

import pyautogui
pyautogui.dragRel(100,500,duration=4)  # 第一个参数是左右移动像素值,第二个是上下移动像素值, 向右拖动100px,向下拖动500px, 这个过程持续 4 秒钟

控制鼠标滚动

        控制鼠标滚动的函数是scroll(), 传入一个整数的参数,说明向上或向下滚动多少个单位;单位根据操作系统不同而不同

import pyautogui
pyautogui.scroll(300)  # scroll up 300 "clicks"
pyautogui.scroll(10) # scroll up 10 "clicks"
pyautogui.scroll(10, x=100, y=100) # move mouse cursor to 100, 200, then scroll up 10 "clicks" 

补间/缓动函数(import Pytweening)

        指示鼠标移动到目标位置时的进度,可以使鼠标移动变得更漂亮

3.4、键盘控制功能

按键

import pyautogui
pyautogui.press('enter')   # 按enter键,并释放
pyautogui.press('f1')
pyautogui.press(['left', 'left', 'left'])
pyautogui.press('left', presses=3)  # 可以设置按键次数

组合按键,按下&释放

例如:要在按住 Shift 键的同时按向左箭头键

import pyautogui
pyautogui.keyDown('shift')  # 按下shift键
pyautogui.press('left')  # 按左键,并释放
pyautogui.keyUp('shift')   # 释放shift键

输入字符串

import pyautogui
pyautogui.write('Hello world!', interval=0.25)  # interval 每个字符输入间隔时间

hold()上下文管理器

import pyautogui
with pyautogui.hold('shift'):
    pyautogui.press(['left','left','left'])

热键hotkey()函数

hotkey()可以传递多个按键字符串,这些按键字符串将按顺序按下,然后按相反的顺序释放。

import pyautogui
pyautogui.hotkey('ctrl', 'shift', 'esc)
# 相当于以下代码
# pyautogui.keyDown('ctrl')
# pyautogui.keyDown('shift')
# pyautogui.keyDown('esc')
# pyautogui.keyUp('esc')
# pyautogui.keyUp('shift')
# pyautogui.keyUp('ctrl')

3.5、消息框功能

警报框

Python--界面UI控制,模拟键鼠操作的模块pyautogui(超详细用法),python,开发语言

import pyautogui
pyautogui.alert(text='This is an alert box', title='Test', button='OK')   # 显示一个简单的消息框,其中包含文本和一个“确定”按钮。返回button键的值。

确认框/选择框

Python--界面UI控制,模拟键鼠操作的模块pyautogui(超详细用法),python,开发语言

import pyautogui
pyautogui.confirm('选择一项', buttons=['A', 'B', 'C'])
pyautogui.confirm(text='', title='', buttons=['OK', 'N'])   # 显示一个选择框,有多个按键,返回按键的值

提示输入框

Python--界面UI控制,模拟键鼠操作的模块pyautogui(超详细用法),python,开发语言

import pyautogui
pyautogui.prompt(text='', title='' , default='')   
# 显示带有文本输入的消息框以及“确定”和“取消”按钮。返回输入的文本,如果单击“取消”,则返回None

密码输入框

Python--界面UI控制,模拟键鼠操作的模块pyautogui(超详细用法),python,开发语言

import pyautogui
pyautogui.password(text='', title='', default='', mask='*’)
# 显示带有文本输入的消息框以及“确定”和“取消”按钮。键入的字符显示为*。返回输入的文本,如果单击“取消”,则返回None

3.6 桌面截图,图片匹配,像素点RGB信息

源码,从源码中可看到,引用了PyScreeze模块、Pillow模块,这两个模块会在安装pyautogui模块时一起安装。

引用的方法是红色框住的这些

Python--界面UI控制,模拟键鼠操作的模块pyautogui(超详细用法),python,开发语言

截图功能

import pyautogui
pyautogui.screenshot("C:\\Users\\XX\\test.png")  
# 全屏截图,传递一个文件名字符串会将截图保存到一个文件中,并将其作为一个Image对象返回。 

pyautogui.screenshot("C:\\Users\\XX\\test.png", region=(0, 0, 300, 400))      
# 非全屏截图,可选的region关键字参数。可以传递一个包含要捕获区域的左、顶、宽、高的四个整数元组

图片匹配

import pyautogui
pyautogui.locateAll(needleImage, haystackImage, grayscale=None, region=None)
# # 返回一个生成器,用tuple转换一下生成器,得到一个元组,元组中的每个元素是BOX类的实例对象,未匹配到则返回空元组

pyautogui.locate(needleImage, haystackImage)
# 返回值就是上图的b[0],即BOX类的一个实例对象,如果未匹配则报异常

pyautogui.locateAllOnScreen(needleImage, minSearchTime)
# 与locateAll()相比第二个参数变成了minSearchTime,可以理解最小匹配时间,会在这个时间中一直从当前界面找needleImage图,直至找到返回,返回值与pyautogui.locateAll一样,是返回一个生成器

pyautogui.locateOnScreen(needleImage, minSearchTime)
# 返回值是BOX类的一个实例对象,如果未匹配则报异常

pyautogui.locateCenterOnScreen(needleImage)
# 匹配失败返回异常,匹配成功返回一个Point类的一个实例,实例属性x, y坐标,匹配到的图片中心点

pyautogui.locateOnWindow(image, title)
# 里面使用了pygetwindow模块,匹配title的UI界面中是否包含image,返回值同pyautogui.locateOnScreen

像素点RGB信息

import pyautogui
pyautogui.center((10, 10, 6, 8))
# Point(x=13, y=14)
# 返回一个Point类的一个实例,tuple转换后为一个元组

pyautogui.pix(x, y)
# 返回屏幕像素在x, y处的颜色作为RGB元组,每种颜色表示从0到255。(x,y)像素点的(r, g, b)

pyautogui.pixelMatchesColor(x, y, (r, g, b))
pyautogui.pixelMatchesColor(200,500, (60,63,65))
# 返回True or False,即像素点的颜色匹配是否一致

3.7、窗口控制功能

PyautoGUI集成了pygetwindow模块,可以直接调用函数获取窗口信息、控制窗口大小、移动、关闭等

获得窗口对象

        获得当前活动(聚焦)窗口的对象
import pyautogui
pyautogui.getActiveWindow()  # 返回当前活动(聚焦)窗口的对象
        获得所有可见窗口的窗口对象列表
import pyautogui
pyautogui.getAllWindows()  # 返回所有可见窗口的窗口对象列表
        获得当前活动(聚焦)窗口的标题
import pyautogui
pyautogui.getActiveWindowTitle()   # 返回当前活动(聚焦)窗口的标题
        获得所有可见窗口的标题字符串列表
import pyautogui
pyautogui.getAllTitles()  # 返回所有可见窗口的标题字符串列表
        获得标题文本中包含字符'ibox'的窗口对象列表
import pyautogui
pyautogui.getWindowsWithTitle(“ibox”)   # 返回标题文本中包含子字符'ibox'的窗口对象列表。
        获得包含坐标点的窗口对象列表
import pyautogui
pyautogui.getWindowsAt(2000, 2000)   # 返回一个窗口对象列表,这些窗口包含坐标(2000, 2000)

控制窗口

        窗口对象的属性
import pyautogui
win = pyautogui.getWindowsWithTitle('Untitled')[0]  # win是title是'Untitled'的窗口对象

# 窗口对象的属性
win.size  #(132,100)返回元组,窗口大小
win.width  # 返回int,窗口的宽度
win.height  # 返回int,窗口的高度
win.topleft  # (10,10)返回元组,窗口最左上角坐标 
win.bottomright  # (200,200)返回元组,窗口最右下角坐标
win.top  # 返回int,窗口上边缘的y坐标值
win.left  # 返回int,窗口左边缘的x坐标值
win.isMaximized  # 返回bool,窗口是否是最大窗口
win.isMinimized   # 返回bool,窗口是否是最小窗口
        窗口对象的方法
import pyautogui
win = pyautogui.getWindowsWithTitle('Untitled')[0]  # win是title是'Untitled'的窗口对象

# 窗口对象的方法
win.maximize()   # 窗口最大化
win.minimize()   # 窗口最大化
win.restore()   # 恢复窗口大小
win.resize(200,200)   # 窗口x轴增加200,y轴增加200
win.resizeTo(200,200)   # 窗口变化至x轴宽度200,y轴宽度200
win.move(10, 10)   # 窗口相对当前位置x轴移动10,y轴移动10
win.moveTo(10, 10)   # 窗口移动至10,y轴移动至10,左上角坐标(10,10)

四、应用

       自动化测试

        可以模拟用户的操作,用于自动化测  试各种软件和系统的功能。  

       数据采集和处理

        可以帮助自动化从网页或应用程序中采集数据,并进行处理和分析。

       软件演示和教程录制

        可以用于自动化演示软件的功能和操作,录制教程视频等。  

       游戏辅助工具

        可以用来制作游戏辅助工具,自动化完成一些重复性操作。

五、官方文档

       Pyautogui

        https://pyautogui.readthedocs.io/en/latest/msgbox.html  

       Pygetwindow  

        https://pygetwindow.readthedocs.io/en/latest/#  

       Pillow/PIL  

        https://pillow.readthedocs.io/en/latest/#    

       Pyscreeze  

        https://github.com/asweigart/pyscreeze文章来源地址https://www.toymoban.com/news/detail-751826.html

到了这里,关于Python--界面UI控制,模拟键鼠操作的模块pyautogui(超详细用法)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【PyAutoGUI操作指南】02 鼠标控制功能+获取当前坐标+鼠标事件+鼠标滚动查询

    X坐标从左侧的0开始,向右增加,Y坐标从顶部的0开始,向下递增。 左上角的像素位于坐标0,0。如果屏幕分辨率为1920 x 1080,则右下角的像素将为1919,1079(因为坐标从0开始,而不是1)。 3.1.1 输出屏幕分辨率大小与鼠标光标位置 3.1.2 判断位置是否在屏幕内 3.2.1 moveTo()将鼠标

    2024年02月09日
    浏览(55)
  • python通过pyautogui库来控制鼠标和键盘

    PyAutoGUI是一个纯Python的GUI自动化工具,通过它可以用程序自动控制鼠标和键盘操作。它支持Windows, MacOS和Linux。 安装: 基本用法看代码,非常简单易用。 运行脚本的时候,MacOS会提示你打开系统偏好控制,要求允许运行脚本的程序控制电脑,允许即可。 先看一下屏幕坐标系:

    2024年02月09日
    浏览(49)
  • 关于python中的键鼠操作在游戏中无效的解决办法

    下载pydirectinput库  添加需要的键鼠操作 最最重要的是以管理员方式运行程序 运行代码就可以实现键鼠操作了,根本不用买幽灵键鼠什么外设    

    2024年02月20日
    浏览(43)
  • python使用pyautogui控制鼠标与键盘(无屏幕内容)

            若是读者学过爬虫工具Selenium,对pyautogui必能快速上手,只需要不断实践复习即可熟练掌握。若是没学过当然没关系,我会以初学者的角度尽可能详细地向你解读新手遇到的许多问题。         请注意: 在本文章中,我会import pyautogui as auto                 在本

    2024年02月20日
    浏览(40)
  • python pyautogui+pynput鼠标键盘自动控制与监听

    参考https://blog.csdn.net/hfy1237/article/details/127960423 官方文档 https://pyautogui.readthedocs.io/en/latest/ 1、基本函数 常用函数列表 函数名 功能 基本 pyautogui.size() 返回包含分辨率的元组 pyautogui.PAUSE 每个函数的停顿时间,默认0.1s pyautogui.FAILSAFE 是否开启防故障功能,默认True 键盘 pyautogui

    2024年02月11日
    浏览(53)
  • Python的pyautogui库(鼠标,键盘操作篇)

    图片操作篇可以观看https://blog.csdn.net/m0_61741706/article/details/126898616 pyautogui库可以模仿人去点击输出和键盘,相比selenium库,pyautogui库更方便,更便捷 下载就用pip直接下载,后者用清华源下载  出现这样就是下载成功 之后引入库,并判断电脑屏幕的分辨率 接下来是控制鼠标移

    2024年02月12日
    浏览(62)
  • Python selenium与pyautogui控制浏览器实现modis数据自动下载

    目录 序言: 准备工作: 基本思路: 完整代码:         上次提到通过modis连接下载数据的方式有很多,本文选择selenium模拟登录的方式通过谷歌浏览器下载,但是并不推荐这种方法,只是恰好学习了selenium的一些操作,所以写这个代码做了一些测试。         本文章只需要

    2024年02月11日
    浏览(50)
  • Python制作模拟按键摘录,pyautogui库及该库在某些窗口不生效的问题部分解决措施(PyDirectInput库、winio驱动级模拟)

    原文出处:https://blog.csdn.net/qq_61260911/article/details/129885971 安装pyautogui库,可以通过pip命令安装: 安装完成后,就可以开始使用pyautogui库了。 (1) 导包 上述代码将模拟键盘输入“Hello world!”。 (2)基本鼠标控制 PyAutoGUI可以模拟鼠标的点击和移动。以下是一些基本操作: move

    2024年02月09日
    浏览(38)
  • python操作windows桌面实现鼠标、键盘操作,python之pyautogui库文档详解

    PyAutoGUI是一个纯Python的GUI自动化工具,其目的是可以用程序自动控制鼠标和键盘操作,多平台支持(Windows,OS X,Linux)。 源码地址: https://github.com/asweigart/pyautogui 官方文档: https://github.com/asweigart/pyautogui/blob/master/docs/simplified-chinese.ipynb PyAutoGUI可以模拟鼠标的移动、点击、拖

    2024年02月04日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包