开发者

pyautogui库的使用及说明

开发者 https://www.devze.com 2025-09-26 09:29 出处:网络 作者: Q.V.Q
目录一、前言二、基本使用0. 坐标说明1. 一般功能2. 故障保险3. 鼠标控制4. 键盘控制5. 消息框函数6. 截图功能三、进阶教程1. 鼠标控制2. 键盘控制3. 消息框函数4. 截图功能四、实例1. 自动点击网页指定图标2. 获取鼠
目录
  • 一、前言
  • 二、基本使用
    • 0. 坐标说明
    • 1. 一般功能
    • 2. 故障保险
    • 3. 鼠标控制
    • 4. 键盘控制
    • 5. 消息框函数
    • 6. 截图功能
  • 三、进阶教程
    • 1. 鼠标控制
    • 2. 键盘控制
    • 3. 消息框函数
    • 4. 截图功能
  • 四、实例
    • 1. 自动点击网页指定图标
    • 2. 获取鼠标当前位置
  • 总结

    一、前言

    PyAutoGUI 让您的 python 脚本控制鼠标和键盘以自动与其他应用程序交互。

    官方文档:PyAutoGUI documentation

    常用函数列表
    函数名功能
    基本pyautogui.size()返回包含分辨率的元组
    pyautogui.PAUSE每个函数的停顿时间,默认0.1s
    pyautogui.FAILSAFE是否开启防故障功能,默认True
    键盘pyautogui.press('键盘字符')按下并松开指定按键
    pyautogui.keyDown('键盘字符')按下指定按键
    pyautogui.keyUp('键盘字符')松开指定按键
    pyautogui.hotkey('键盘字符1', '键盘字符2')按下多个指定键
    鼠标pyautogui.position()返回当前鼠标当前位置的元组
    pyautogui.moveTo(x,y,duration=1)   按绝对位置移动鼠标并设置移动时间
    pyautogui.moveRel(x_rel,y_rel,duration=4)  按相对位置移动鼠标并设置移动时间
    pyautogui.dragTo(x, y, duration=1)   按绝对位置拖动鼠标并设置移动时间
    pyautogui.dragRel(x_rel, y_rel, duration=4)  按相对位置拖动鼠标并设置移动时间
    pyautogui.click(x, y) 鼠标点击指定位置,默认左键
    pyautogui.click(x, y, button='left')鼠标单击左键
    pyautogui.click(x, y, button='right')鼠标单击右键
    pyautogui.click(x, y, button='middle')  鼠标单击中间,即滚轮
    pyautogui.doubleClick(10,10) 鼠标左键双击指定位置
    pyautogui.rightclick(10,10)鼠标右键双击指定位置
    pyautogui.middleClick(10,10http://www.devze.com鼠标中键双击指定位置
    pyautogui.scroll(10) 鼠标滚轮向上滚动10个单位

    press(), keyDowm(),keyUp(),hotKey()支持的有效字符串列表如下:

    类别
    字母'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'
    数字'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'
    符号'\t', '\n', '\r', ' ', '!', '"', '#', '$', '%', '&', "'", '(', ')', '*', '+', ',', '-', '.', '/', , ':', ';', '<', '=', '>', '?', '@', '[', '\\', ']', '^', '_', '`', '{', '|', '}', '~',
    F键'f1', 'f10', 'f11', 'f12', 'f13', 'f14', 'f15', 'f16', 'f17', 'f18', 'f19', 'f2', 'f20', 'f21', 'f22', 'f23', 'f24', 'f3', 'f4', 'f5', 'f6', 'f7', 'f8', 'f9',
    数字键盘'num0', 'num1', 'num2', 'num3', 'num4', 'num5', 'num6', 'num7', 'num8', 'num9', 
    其他'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', 'final', 'fn', 'hanguel', 'hangul', 'hanja', 'help', 'home', 'insert', 'junja', 'kana', 'kanji', 'launchapp1', 'launchapp2', 'launchmail', 'launchmediaselect', 'left', 'modechange', 'multiply', 'nexttrack', 'nonconvert', , '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'

    二、基本使用

    0. 坐标说明

    pyautogui库的使用及说明

    坐标的距离通过像素计算,如果你的屏幕分辨率是1920 x 1080,右下角的像素将是1919, 1079(因为坐标从0开始,而不是1)。 

    1. 一般功能

    ① 获取鼠标当前坐标(以像素为单位)

    pyautogui.position()

    ② 获取屏幕尺寸 

    pyautogui.size()

    ③ 判断指定坐标 (x,y) 是否在屏幕内

     pyautogui.onScreen(x, y)

    2. 故障保险

    ① 控制调用 PyAutoGUI 后的暂停时间(单位:秒)

    pyautogui.PAUSE = 2.5

    ② 当故障安全模式为True时,将鼠标移动到左上角将引发一个 pyautogui.FailSaf编程客栈eException 从而中断程序(默认为:True)

    pyautogui.FAILSAFE = True

    3. 鼠标控制

    ① 在 num_Second 秒内将鼠标移动到指定坐标

    pyautogui.moveTo(x, y, duration=num_seconds)

    ② 相对于鼠标当前位置移动鼠标

    pyautogui.moveRel(xOffset, yOffset, duration=num_seconds) 

    ③ 在 num_Second 秒内将鼠标拖动到指定坐标

    pyautogui.dragTo(x, y, duration=num_seconds)

    ④  相对于鼠标当前位置拖动鼠标

    pyautogui.dragRel(xOffset, yOffset, duration=num_seconds)

    ⑤ 调用click()只会让鼠标在当前位置用左键单击一次,但关键字参数可以改变这一点,button关键字参数可以'left'是、'middle''right'

    pyautogui.click(x=moveToX, y=moveToY, clicks=num_of_clicks, interval=secs_between_clicks,button = 'left')

    ⑥ 单独调用指定键的点击事件

    pyautogui.rightClick(x=moveToX, y=moveToY)
    pyautogui.middleClick(x=moveToX, y=moveToY)
    pyautogui.doubleClick(x=moveToX, y=moveToY)
    pyautogui.tripleClick(x=moveToX, y=moveToY)

    ⑦ 正数控制滚轮将向上滚动,负数控制滚轮将向下滚动

    pyautogui.scroll(amount_to_scroll, x=moveToX, y=moveToY)

    ⑧ 单独调用鼠标的按下和松开事件

    pyautogui.mouseDown(x=moveToX, y=moveToY, button='left')
    pyautogui.mouseUp(x=moveToX, y=moveToY, button='left')

    4. 键盘控制

    ① 在键盘光标处输入指定文本

    pyautogui.typewrite('Hello world!\n', interval=secs_between_keys)

    ② 传递密钥等

    pyautogui.typewrite(['a', 'b', 'c', 'left', 'backspace', 'enter', 'f1'], interval=secs_between_keys) 

    ③ 键盘热键(如Ctrl-S或Ctrl-Shift-1)可以通过将键名称列表传递给hotkey()来完成:

    pyautogui.hotkey('ctrl', 'c')  # ctrl-c 复制
    pyautogui.hotkey('ctrl', 'v')  # ctrl-v 粘贴

    ④ 单独调用按钮的点击事件和松开事件:

    pyautogui.keyDown(键名称)
    pyautogui.keyUp(键名称) 

    5. 消息框函数

    如果您需要暂停程序直到用户单击确定,或者想要向用户显示一些信息,则可使用消息框函数。

    pyautogui.alert('这将显示带有确定按钮的文本。')
    pyautogui.confirm('这将显示带有确定和取消按钮的文本。')
    pyautogui.prompt('这样用户就可以输入一个字符串,然后按确定。')

    6. 截图功能

    ① PyAutoGUI使用Pillow/PIL来存储与图像相关的数据。

    pyautogui.screenshot()  # 返回Pillow/PIL图像对象
    pyautogui.screenshot('foo.png')  # 返回Pillow/PIL图像对象,并将其保存到文件

    ② 返回在当前界面找到第一个图标位置的元组 (left, top, width, height) 

    pyautogui.locateOnScreen('looksLikeThis.png') 

    ③ LocateAllOnScreen()函数将返回屏幕上找到的所有位置的生成器。

    >>> for i in pyautogui.locateAllOnScreen('looksLikeThis.png')

    ...

    ...

    (863, 117, 70, 13)

    (623, 137, 70, 13)

    (853, 577, 70, 13)

    (883, 617, 70, 13)

    (973, 657, 70, 13)

    (933, 877, 70, 13)

    >>> list(pyautogui.locateAllOnScreen('looksLikeThis.png'))

    [(863, 117, 70, 1rThfWw3), (623, 137, 70, 13), (853, 577, 70, 13), (883, 617, 70, 13), (973, 657, 70, 13), (933, 877, 70, 13)]

    ④ 返回屏幕上图像所在位置的XY坐标。

    >>> pyautogui.locateCenterOnScreen('looksLikeThis.png')  # 返回中心坐标 (898,423)

    三、进阶教程

    1. 鼠标控制

    1.1 pyautogui.size()

    返回屏幕的分辨率大小,返回类型为元组。

    >>> pyautogui.size()
    (1920, 1080)

    1.2 pyautogui.position()

    返回鼠标光标的当前位置,返回类型为元组。

    >>> pyautogui.position()
    (187, 567)

    1.3 pyautogui.onScreen()

    判断指定位置是否在屏幕内,返回类型为布尔型。

    >>> pyautogui.onScreen(0, 0)
    True
    >>> pyautogui.onScreen(0, -1)
    False
    >>> pyautogui.onScreen(0, 99999999)
    False

    1.4 pyautogui.move()

    移动鼠标光标以当前位置为起点移动指定距离,如果输入 None 则为当前位置的X或Y。

    >>> pyautogui.moveTo(100, 200)   # moves mouse to X of 100, Y of 200.
    >>> pyautogui.moveTo(None, 500)  # moves mouse to X of 100, Y of 500.
    >>> pyautogui.moveTo(600, None)  # moves mouse to X of 600, Y of 500.

     第三个参数可以设置鼠标移动到指定位置所花费的时间。

    >>> pyautogui.moveTo(100, 200, 2)   # moves mouse to X of 100, Y of 200 over 2 seconds

    1.5 pyautogui.moveTo()

    与move()类似,此函数可以按照绝对位置移动鼠标。

    >>> pyautogui.moveTo(js100, 200)  # moves mouse to X of 100, Y of 200.
    >>> pyautogui.move(0, 50)       # move the mouse down 50 pixels.
    >>> pyautogui.move(-30, 0)      # move the mouse left 30 pixels.
    >>> pyautogui.move(-30, None)   # move the mouse left 30 pixels.

    1.6 pyautogui.drag()

    以相对位置拖动鼠标,可指定拖动时按住某个键:'left', 'middle', 'right'。

    >>> pyautogui.dragTo(100, 200, button='left')     # drag mouse to X of 100, Y of 200 while holding down left mouse button
    >>> pyautogui.dragTo(300, 400, 2, button='left')  # drag mouse to X of 300, Y of 400 over 2 seconds while holding down left mouse button
    >>> pyautogui.drag(30, 0, 2, button='right')   # drag the mouse left 30 pixels over 2 seconds while holding down the right mouse button

    1.7 pyautogui.dragto()

    以绝对位置拖动鼠标,可指定拖动时按住某个键:'left', 'middle', 'right'。

    1.8 pyautogui.click()

    模拟在鼠标当前位置单击鼠标左键。

    >>> pyautogui.click()  # click the mouse
    >>> pyautogui.click(x=100, y=200)  # move to 100, 200, then click the left mouse button.
    >>> pyautogui.click(button='right')  # right-click the mouse
    >>> pyautogui.click(clicks=2)  # double-click the left mouse button
    >>> pyautogui.click(clicks=2, interval=0.25)  # double-click the left mouse bu编程tton, but with a quarter second pause in between clicks
    >>> pyautogui.click(button='right', clicks=3, interval=0.25)  ## triple-click the right mouse button with a quarter second pause in between clicks

    1.9 pyautogui.doubleClick()

    模拟双击鼠标左键。

    >>> pyautogui.doubleClick()  # perform a left-button double click

    1.10 pyautogui.tripleClick()

    1.11 pyautogui.rightClick()

    1.12 pyautogui.mouseDown()

    按下鼠标

    >>> pyautogui.mouseDown(); pyautogui.mouseUp()  # does the same thing as a left-button mouse click
    >>> pyautogui.mouseDown(button='right')  # press the right button down
    >>> pyautogui.mouseUp(button='right', x=100, y=200)  # move the mouse to 100, 200, then release the right button up.

    1.13 pyautogui.mouseUp()

    松开鼠标

    1.14 pyautogui.scroll()

    滚动鼠标滚轮

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

    1.15 pyautogui.hscroll()

    水平滚动鼠标

    >>> pyautogui.hscroll(10)   # scroll right 10 "clicks"
    >>> pyautogui.hscroll(-10)   # scroll left 10 "clicks"

    1.16 pyautogui.vscroll()

    垂直滚动鼠标

    2. 键盘控制

    2.1 pyautogui.write()

    键入指定字符串

    >>> pyautogui.write('Hello world!')                 # prints out "Hello world!" instantly
    >>> pyautogui.write('Hello world!', interval=0.25)  # prints out "Hello world!" with a quarter second delay after each character

    2.2 pyautogui.press()

    按一次指定键

    >>> pyautogui.press('enter')  # press the Enter key
    >>> pyautogui.press('f1')     # press the F1 key
    >>> pyautogui.press('left')   # press the left arrow key

    2.4 pyautogui.keyDown()

    按下指定键

    2.5 pyautogui.keyUp()

    松开指定键

    2.6 pyautogui.hold()

    保持按住某个键并松开

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

    2.7 pyautogui.hotkey()

    实现快捷键

    >>> pyautogui.hotkey('ctrl', 'shift', 'esc')

    3. 消息框函数

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

    3.1 pyautogui.alert()

    >>> alert(text='', title="pyautogui库的使用及说明", button='OK')

    显示一个简单的消息框,其中包含文本和一个确定按钮。返回单击的按钮的文本。 

    3.2 pyautogui.confirm()

    >>> confirm(text='', title="pyautogui库的使用及说明", buttons=['OK', 'Cancel'])

    显示带有确定和取消按钮的消息框。可以自定义按钮的数量和文本。返回单击的按钮的文本。

    3.3 pyautogui.prompt()

    >>> prompt(text='', title="pyautogui库的使用及说明" , default='')

    显示带有文本输入和确定和取消按钮的消息框。返回输入的文本,如果单击了取消,则返回None。

    3.4 pyautogui.password()

    >>> password(text='', title="pyautogui库的使用及说明", default='', mask='*')

    显示带有文本输入和确定和取消按钮的消息框。键入的字符显示为*。返回输入的文本,如果单击了取消,则返回None。

    4. 截图功能

    PyAutoGUI可以截取屏幕截图,将它们保存到文件中,并在屏幕内定位图像。

    例如,如果您有一个需要单击的按钮的小图像,并且想要在屏幕上找到它,这是很有用的。这些功能由随PyAutoGUI一起安装的PyScreeze模块提供。

    4.1 pyautogui.screenshot()

    调用screenshot()将返回一个 Image 对象(有关详细信息,请参阅 Pillow 或 PIL 模块文档)。传递文件名字符串会将屏幕截图保存到文件中,并将其作为 Image 对象返回。

    >>> import pyautogui
    >>> im1 = pyautogui.screenshot()
    >>> im2 = pyautogui.screenshot('my_screenshot.png')  # 捕获并保存到本地
    >>> im3 = pyautogui.screenshot(region=(0,0, 300, 400))  # 捕获指定范围

    4.2 pyautogui.locateOnScreen()

    获取屏幕坐标。返回值是一个 4 整数元组:(left, top, width, height)。可以传递此元组center()以获取此区域中心的 X 和 Y 坐标。

    4.3 pyautogui.locateCenterOnScreen()

    返回在屏幕上找到的第一个实例的中心的 (x, y) 坐标。

    4.4 pyautogui.locateAllOnScreen()

    返回一个生成器,该生成器生成(左、上、宽、高)元组。

    4.5 pyautogui.pixel()

    获取屏幕截图中像素的 RGB 颜色

    >>> import pyautogui
    >>> im = pyautogui.screenshot()
    >>> im.getpixel((100, 200))
    (130, 135, 144)

    4.6 pyautogui.pixelMatchesColor()

    验证单个像素是否与给定像素匹配。

    >>> import pyautogui
    >>> pyautogui.pixelMatchesColor(100, 200, (130, 135, 144))
    True
    >>> pyautogui.pixelMatchesColor(100, 200, (0, 0, 0))
    False

    四、实例

    1. 自动点击网页指定图标

    参考链接:

    import pyautogui
    import time
    
    while True:
        # 本页存在指定图标
        if pyautogui.locateOnScreen('icon.png'):
            time.sleep(0.5)    # 等待 0.5 秒
            position = pyautogui.center(pyautogui.locateOnScreen('icon.png'))    # 寻找图标的中心
            pyautogui.click(position)    # 点击
        # 本页不存在指定图标
        else:  
            pyautogui.scroll(-500)    # 滚动鼠标,进入下一页
    

    2. 获取鼠标当前位置

    # 案例获取鼠标的位置,方便复制我们定位的鼠标坐标点到代码中
    import pyautogui
    import time
     
     
    # 获取鼠标位置
    def get_mouse_positon():
      time.sleep(5) # 准备时间
      print('开始获取鼠标位置')
      try:
        for i in range(10):
          # Get and print the mouse coordinates.
          x, y = pyautogui.position()
          positionStr = '鼠标坐标点(X,Y)为:{},{}'.format(str(x).rjust(4), str(y).rjust(4))
          pix = pyautogui.screenshot().getpixel((x, y)) # 获取鼠标所在屏幕点的RGB颜色
          positionStr += ' RGB:(' + str(pix[0]).rjust(3) + ',' + str(pix[1]).rjust(3) + ',' + str(pix[2]).rjust(
            3) + ')'
          print(positionStr)
          time.sleep(0.5) # 停顿时间
      except:
        print('获取鼠标位置失败')
     
     
    if __name__ == "__main__":
      get_mouse_positon()
    

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。

    0

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    关注公众号