一、前言

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,10)  鼠标中键双击指定位置
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. 坐标说明

坐标的距离通过像素计算,如果你的屏幕分辨率是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.FailSafeException 从而中断程序(默认为: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, 13), (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(100, 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 button, 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='', button='OK')

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

3.2 pyautogui.confirm()

>>> confirm(text='', title='', buttons=['OK', 'Cancel'])

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

3.3 pyautogui.prompt()

>>> prompt(text='', title='' , default='')

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

3.4 pyautogui.password()

>>> password(text='', title='', 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 timewhile 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()

pyautogui库的使用教程(超详细)相关推荐

  1. svn安装教程 mysql_CentOS6.4 下安装SVN的详细教程(超详细)

    1.检查系统是否已经安装如果安装就卸载 rpm -qa subversion yum remove subversion 2.安装 yum install subversion 3.建立SVN库 mk ...

  2. Centos7环境下安装Mysql8详细教程(超详细,亲测百分百成功)

    Centos7环境下安装Mysql8详细教程(超详细,亲测百分百成功) 文章目录 Centos7环境下安装Mysql8详细教程(超详细,亲测百分百成功) 1.上传或者下载mysql安装包 2.检查是否 ...

  3. maven配置阿里云_阿里云OSS PicGo 配置图床教程 超详细

    阿里云OSS和PicGo配置图床教程 超详细 废话不多说,直接开始 购买阿里云OSS服务 登录阿里云 打开侧边栏,选择对象存储OSS,如下图: 对象存储界面右部选择创建Bucket,如下图所示: 之后 ...

  4. 新版Android Studio(4.1.1 for Windows 64-bit)的安装教程(超详细)

    新版Android Studio(4.1.1 for Windows 64-bit)的安装教程(超详细) 获取Android Studio软件 在心仪的磁盘新建文件夹:AndroidStudio(文件 ...

  5. 【台大郭彦甫】Matlab入门教程超详细学习笔记二:基本操作与矩阵运算(附PPT链接)

    Matlab入门教程超详细学习笔记二:基本操作与矩阵运算 前言 一.基本操作 1.把matlab当作计算器使用 2.变量 3.控制格式输出 二.矩阵运算 1.矩阵 2.矩阵索引 3.使用:创建向量 4 ...

  6. windows安装Weblogic教程(图文教程超详细版)

    windows安装Weblogic教程(超详细) 一. 下载 WebLogic 到Oracle官网http://www.oracle.com/ 下载WebLogic(根据自己的情况选择),本文档下载的 ...

  7. 阿里云OSS PicGo 配置图床教程 超详细

    阿里云OSS和PicGo配置图床教程 超详细 废话不多说,直接开始 购买阿里云OSS服务 登录阿里云 打开侧边栏,选择对象存储OSS,如下图: 对象存储界面右部选择创建Bucket,如下图所示: 之后 ...

  8. exe电子书制作教程(超详细)【申明:来源于网络】

    exe电子书制作教程(超详细)[申明:来源于网络] 地址:http://wenku.baidu.com/view/0b046907eff9aef8941e0631.html

  9. spdlog日志库说明文档(超详细)

    spdlog日志库说明文档(超详细) spdlog是一个开源.快速.只有头文件的C++11日志库,code地址在https://github.com/gabime/spdlog,基础示例在https: ...

最新文章

  1. iOS Sprite Kit教程之滚动场景
  2. 44)PHP,多个数据库查询(我没试)
  3. “2012年度IT博客大赛”获奖感言--梦想、学习、坚持、自信、淡定
  4. OpenCASCADE:拓扑 API之对象修改
  5. .Net之微信小程序获取用户UnionID
  6. c语言封闭曲线分割平面_高手的平面课堂:8种常用的设计排版方式,告别通宵加班...
  7. 数据定义语言DDL之数据库操作
  8. 【docker】docker Portainer容器可视化管理工具使用文档
  9. mysql80压缩版安装_裕-安装MySQL80(压缩版)
  10. ORACEL使用脚本来修改表结构
  11. C++编写程序:输入三角形的三边,判断三角形的类型。
  12. 多国语言点阵字库合并!!!
  13. 中国互联网大人物直播简史
  14. 研发流程——变更流程管控
  15. 【算法】-8大排序算法总结-Python
  16. 青少年编程究竟应该从什么语言学起?
  17. learnopengl——Specular IBL——貌似读懂了
  18. 微信小程序 -- 原生JS集成腾讯IM实时聊天/实时音视频(踩坑及心得)
  19. android 内功修炼参考
  20. MSF Risk Management Discipline

热门文章

  1. 南通大学计算机考研资料汇总
  2. android手机与苹果手机,苹果手机和安卓手机,速度大比拼,速度快有原因
  3. java中asscc码表,RedHat Linux各版本汇总
  4. 熊猫数据集_在日常生活中使用熊猫数据框
  5. 待机唤醒设置_iPhone关掉这8个偷电功能,待机时间增加5小时
  6. 前端验证码之-滑动验证码
  7. 数据库原理-模式分解算法详解(3NF BCNF)
  8. 今天慕名去找了两个南京小吃解馋
  9. 曾经一个让我感觉有成就感的项目
  10. WORD 避免页面顶端横线的出现