信息发布→ 登录 注册 退出

PyAutoGUI图形用户界面自动化的超详细教程

发布时间:2026-01-11

点击量:
目录
  • 开始之前
  • 查看屏幕大小
  • 获取当前鼠标的位置
  • 检查指定坐标是否在屏幕上
  • 设置暂停时间
  • 鼠标功能
    • 移动鼠标
    • 鼠标点击
    • 鼠标拖动
    • 鼠标滚动
  • 屏幕功能
    • 截屏功能
    • 定位功能
  • 消息框功能
    • alert()函数
    • confirm()函数
    • prompt()函数
    • password()函数
  • 键盘控制功能
    • write()函数
    • press()函数
    • hotkey()函数
  • 总结

    开始之前

    在开始之前,要先安装所需要的模块 pyautogui, pyautogui 模块可以向 Windows 发送虚拟按键和鼠标点击。

    pip install -i https://pypi.douban.com/simple pyautogui

    查看屏幕大小

    pyautogui.size() 可以获得屏幕的宽和高的像素数(整数)。

    >>> pyautogui.size()
    Size(width=1920, height=1080)
    # 也可以直接将宽,高进行保存 x, y = pyautogui.size()
    

    获取当前鼠标的位置

    函数返回当前位置 X,Y 坐标的元组,如果设置 x,y 的参数,则会覆盖返回结果。

    >>> pyautogui.position(x=None, y=None)
    Point(x=1437, y=817)
    

    检查指定坐标是否在屏幕上

    要检查 X,Y 坐标是否在屏幕上,将它们(支持两个整数,列表,元组)传递给 onScreen() 函数,如果它们在屏幕的边界内,则返回 True ,否则返回 False 。

    >>> pyautogui.size()
    (1920, 1080)
    >>> pyautogui.onScreen(1920, 1080)
    False
    >>> pyautogui.onScreen(1919, 1079)
    True
    

    设置暂停时间

    使用 pyautogui.PAUSE 变量设置要暂 停的秒数。如,在设置 pyautogui.PAUSE = 1 之后,每个 PyAutoGUI 函数调用 在执行动作之后,都会等待一秒。

    >>> pyautogui.PAUSE = 1

    鼠标功能

    移动鼠标

    移动鼠标到指定位置。

    pyautogui.moveTo(x=None, y=None, duration=0.0) # 移动鼠标到指定位置
    pyautogui.move(xOffset=None, yOffset=None, duration=0.0) # 在PyAutoGUI 1.0,move 替换了 moveRel,但moveRel也可以使用

    pyautogui.moveTo(200, 300, duration=0.5)   # 移动到坐标(200,300)
    pyautogui.move(200, 300, duration=0.5)     # 从当前鼠标位置向右移动 200 向下移动 300
    

    主要参数参数:

    x/xOffset:X轴坐标,moveTo() 中取值0或正整数值,move()/moveRel() 中取值可以为负数,代表以当前位置向左移动

    y/yOffset:Y轴坐标,moveTo() 中取值0或正整数值,move()/moveRel() 中取值可以为负数,代表以当前位置向上移动

    duration:移动到指定坐标花费的时间,默认为0,代表立即完成,单位为s

    鼠标点击

    使用 click() 完成鼠标点击操作。

    >>> pyautogui.click(x=None, y=None, clicks=1, interval=0.0, button=PRIMARY, duration=0.0)

    主要参数:

    x:X轴坐标,默认为 None,即当前X轴坐标

    y:Y轴坐标,默认为 None,即当前Y轴坐标(注:X,Y 轴的坐标只能同时指定,不能只指定某一个)

    clicks:鼠标的点击次数,默认为 1 次

    interval:int 或浮点数,表示每次单击之间需要等待多少秒,默认值为0.0,表示单击之间没有暂停

    button:可选 LEFT、MIDDLE、RIGHT、PRIMARY(左键)或 SECONDARY(右键)。它的默认值是 PRIMARY

    duration:如果指定了 X,Y 的值,并且该坐标不是鼠标当前位置的话,那么 duration 参数就可以生效,它表示移动到指定坐标花费的时间,默认为 0,表示立即移动。

    其他点击操作:

    pyautogui.mouseDown()    # 按下鼠标按键(左键)
    pyautogui.mouseUp()      # 释放鼠标按键(左键)
    

    鼠标拖动

    按住鼠标的某个键进行拖动。

    pyautogui.dragTo(x=None, y=None, duration=0.0, button=PRIMARY)     # 将鼠标拖动到指定位置  
    
    pyautogui.drag(xOffset=0, yOffset=0, duration=0.0, button=PRIMARY)    # 将鼠标拖动到屏幕上相对于当前位置的一个点。
    

    主要参数:

    x,y/xOffset,yOffset:x 和 y 指明鼠标事件发生的位置。如果为 None,则使用鼠标当前位置。如果是浮点值,则将其舍入。如果在屏幕边界之外,则事件发生在屏幕边缘。

    duration:如果指定了 X,Y 的值,并且该坐标不是鼠标当前位置的话,那么 duration 参数就可以生效,它表示移动到指定坐标花费的时间,默认为 0,表示立即移动。

    button:可选 LEFT、MIDDLE、RIGHT、PRIMARY(左键)或 SECONDARY(右键)。它的默认值是 PRIMARY

    ▶️示例:

    鼠标滚动

    垂直滚动,在不同平台滚动的效果可能不一样。

    >>> pyautogui.scroll(100)   # 向上滚动100
    >>> pyautogui.scroll(-100)  # 向下滚动100
    >>> pyautogui.scroll(100, x=200, y=200)  # 移动到200, 然后执行滚动
    

    水平滚动,(适用与 OS X 和 Linux 平台上)。

    >>> pyautogui.hscroll(100)   # 向右滚动100
    >>> pyautogui.hscroll(-100)   # 向左滚动100
    

    ▶️示例:

    屏幕功能

    截屏功能

    使用 screenshot() 函数来实现截屏功能。调用 screenshot() 将返回一个 Image 对象。传入一个文件名字符串将把截图保存到文件中,并将其作为一个 Image 对象返回。通过 region 关键字参数来捕获指定区域,只需传递一个由 left, top, width, height 组成的元组(left,top为左上角坐标)。

    >>> import pyautogui
    >>> pyautogui.screenshot()
    >>> pyautogui.screenshot(r'C:\Users\pc\Desktop\test.png')
    >>> pyautogui.screenshot(r'C:\Users\pc\Desktop\test.png', region=(300, 300, 500, 1000))
    

    定位功能

    如果不知道要点击的内容在屏幕上的确切坐标,就不能调用 moveTo()click() 函数。但是,如果有按钮的图像,如下面这个图片,那就可以调用 locateOnScreen('图片路径') 函数来获取坐标。返回值是一个元组:(left, top, width, height)。这个元组可以传递给 center() 来获得该区域中心的坐标(X,Y)。如果在屏幕上找不到图像,locateOnScreen() 将引发 ImageNotFoundException 异常。

    >>> location = pyautogui.locateOnScreen('图片路径')
    >>> pyautogui.center(location)
    

    还可以将 grayscale=True 传递给 locateOnScreen,以略微加速(大约 30%)。这降低了图像和截图的颜色饱和度,加快了定位速度,但可能会导致错误匹配。

    消息框功能

    PyAutoGUI 利用 PyMsgBox 中的消息框函数提供了一种跨平台的纯 Python 方法来显示 javascript 样式的消息框。

    alert()函数

    >>> pyautogui.alert(text='text', title='title', button='alert!')
    'alert!'
    

    显示一个带有文本的简单消息框和一个 alert! 按钮。单击按钮后返回 button 的值。

    ▶️示例:

    confirm()函数

    显示带有多个按钮的消息框。按钮的数量和文字可以自己设置。单击按钮返回该按钮的文本。

    >>> pyautogui.confirm(text='text', title='title', buttons=['再考虑一下', '卸载'])
    '卸载'
    

    ▶️示例:

    prompt()函数

    显示一个包含 确认,取消 按钮和文本输入栏的消息框,用户可以输入指定内容。当点击确认按钮后,返回输入框中的值;若点击取消,则返回 None 。

    pyautogui.prompt(text='text', title='title', default='请输入文本信息')
    

    ▶️示例:

    password()函数

    显示一个包含 确认,取消 按钮和文本输入栏的消息框,输入的字符显示为"*"。如果点击确认则返回输入的文本;如果单击“取消”,则为 None

    pyautogui.password(text='text', title='title', default='密码', mask='*')

    ▶️示例:

    键盘控制功能

    write()函数

    write() 函数将在传入的字符串中键入字符。若要在按下每个字符键之间添加延迟间隔,interval 参数可以设置每个按键之间添加延迟。

    >>> pyautogui.write('Hello world!', interval=0.25) # 每个字符间隔0.25秒

    注意:pyautogui 并不支持输入框自动聚焦,所有输入之前先要点击输入框位置。

    press()函数

    press() 函数执行的操作相当于鼠标操作的 click(),它接收传递给它的字符串。

    press('num0', presses=1, interval=0.0)
    • keys:传入的键盘字符串
    • presses:操作按键次数,默认一次
    • interval:每次按键的间隔时间,默认0

    keys 所有取值如下:

    ['\t', '\n', '\r', ' ', '!', '"', '#', '$', '%', '&', "'", '(', ')', '*', '+',
    ',', '-', '.', '/', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', ';'
    , '<', '=', '>', '?', '@', '[', '\\', ']', '^', '_', '`', 'a', 'b', 'c', 'd',
    'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't'
    , 'u', 'v', 'w', 'x', 'y', 'z', '{', '|', '}', '~', 'accept', 'add', 'alt',
    'altleft', 'altright', 'apps', 'backspace', 'browserback', 'browserfavorites',
    'browserforward', 'browserhome', 'browserrefresh', 'browsersearch','browserstop'
    ,'capslock', 'clear', 'convert', 'ctrl', 'ctrlleft','ctrlright', 'decimal',
    'del', 'delete', 'divide', 'down', 'end', 'enter', 'esc', 'escape', 'execute',
    'f1', 'f10', 'f11', 'f12', 'f13', 'f14', 'f15', 'f16', 'f17', 'f18', 'f19', 'f2'
    , 'f20', 'f21', 'f22', 'f23', 'f24', 'f3', 'f4', 'f5', 'f6', 'f7', 'f8', 'f9'
    , 'final', 'fn', 'hanguel', 'hangul','hanja', 'help', 'home', 'insert', 'junja'
    , 'kana', 'kanji', 'launchapp1', 'launchapp2', 'launchmail', 'launchmediaselect'
    , 'left', 'modechange', 'multiply', 'nexttrack', 'nonconvert'
    , 'num0', 'num1', 'num2', 'num3', 'num4', 'num5', 'num6', 'num7'
    , 'num8', 'num9', 'numlock', 'pagedown', 'pageup', 'pause', 'pgdn', 'pgup'
    , 'playpause', 'prevtrack', 'print', 'printscreen', 'prntscrn', 'prtsc'
    , 'prtscr', 'return', 'right', 'scrolllock', 'select', 'separator', 'shift'
    , 'shiftleft', 'shiftright', 'sleep', 'space', 'stop', 'subtract', 'tab', 'up'
    , 'volumedown', 'volumemute', 'volumeup', 'win', 'winleft', 'winright', 'yen'
    , 'command', 'option', 'optionleft', 'optionright']
    

    hotkey()函数

    接收多个字符串参数,顺序按下,再按相反的顺序释放。

    pyautogui.hotkey('ctrl', 'shift', 'esc')
    
    相当于
    pyautogui.keyDown('ctrl')    # 按下 ctrl 
    pyautogui.keyDown('shift')    # 按下 shift
    pyautogui.keyDown('esc')    # 按下 esc
    pyautogui.keyUp('esc')    # 释放 ctrl 
    pyautogui.keyUp('shift')    # 释放 shift
    pyautogui.keyUp('ctrl') # 释放 esc
    

    ▶️示例:

    总结

    在线客服
    服务热线

    服务热线

    4008888355

    微信咨询
    二维码
    返回顶部
    ×二维码

    截屏,微信识别二维码

    打开微信

    微信号已复制,请打开微信添加咨询详情!