安装

PyAutoGUI支持Python 2.x和Python 3.x

  • Windows:PyAutoGUI没有任何依赖,因为它用Python的ctypes模块所以不需要pywin32

    pip install pyautogui

  • OS X:PyAutoGUI需要PyObjC运行AppKit和Quartz模块。这个模块在PyPI上的按住顺序是pyobjc-core和pyobjc

    sudo pip install pyobjc-core
    sudo pip install pyobjc
    sudo pip install pyautogui

  • Linux:PyAutoGUI需要python-xlib(Python 2)、python3-Xlib(Python 3)

    sudo pip install python3-xlib
    sudo apt-get scrot
    sudo apt-get install python-tk
    sudo apt-get install python3-dev
    sudo pip install pyautogui

GitHub: https://github.com/asweigart/pyautogui

常用指令

import pyautogui
#  当前鼠标的坐标
pyautogui.position()
#  当前屏幕的分辨率(宽度和高度)
pyautogui.size()

#  (x,y)是否在屏幕上
x, y = 122, 244
pyautogui.onScreen(x, y)

操控鼠标

  • 移动鼠标
# 用num_seconds秒的时间把光标的X轴(水平)坐标移动xOffset,
# Y轴(竖直)坐标向下移动yOffset。
xOffset, yOffset = 50, 100
pyautogui.moveRel(xOffset, yOffset, duration=num_seconds)
  • 单击鼠标
# 鼠标当前位置单击左键pyautogui.click()# 2秒时间先移动到(100, 200)再单击pyautogui.click(x=100, y=200, duration=2)
  • 双击鼠标

    要做多次单击可以设置clicks参数,还有interval参数可以设置每次单击之间的时间间隔。

     pyautogui.click(clicks=2)pyautogui.doubleClick()# 两次单击之间停留0.25秒pyautogui.click(clicks=2, interval=0.25)
  • 三击鼠标

    pyautogui.tripleClick()
  • 右击鼠标

    可以通过button参数设置left,middle和right三个键。

    pyautogui.rightClick()pyautogui.click(button='right')

    可以增加右击的次数

    pyautogui.rightClick(clicks=2)
    
  • 按下鼠标

    mouseDown()和mouseUp()函数可以实现鼠标按下和鼠标松开的操作。两者参数相同,有x,y和button。

     # 鼠标移动到该位置单击左键pyautogui.mouseDown(x=moveToX, y=moveToY, button='left')
  • 放开鼠标

     # 鼠标移动到该位置放开左键pyautogui.mouseUp(x=moveToX, y=moveToY, button='left')
  • 鼠标拖拽

  • 鼠标滚轮的单击和滚动

    单击滑轮

    pyautogui.click(button='middle')

    鼠标滚轮滚动可以用scroll()函数和clicks次数参数来模拟。不同平台上的clicks次数不太一样。还有x和y参数可以在滚动之前定位到(x, y)位置。

    
    #  向上滚动10格pyautogui.scroll(10)#  向下滚动10格pyautogui.scroll(-10)#  移动到(100, 100)位置再向上滚动10格pyautogui.scroll(10, x=100, y=100)

    在OS X和Linux平台上,PyAutoGUI还可以用hscroll()实现水平滚动。

    
    #  向右滚动10格pyautogui.hscroll(10)#  向左滚动10格pyautogui.hscroll(-10)

操控键盘

  • typewrite()输入函数
    键盘控制的主要函数就是typewrite()。这个函数可以实现字符输入。要在两次输入间增加时间间隔,可以用interval参数。

    
    #  输入Hello world!pyautogui.typewrite('Hello world!')#  每次输入间隔0.25秒,输入Hello world!pyautogui.typewrite('Hello world!', interval=0.25)

    typewrite()函数只能用于单个字符键,不能按SHITF和F1这些功能键。

  • press(),keyDown()和keyUp()函数
    要按那些功能键,可以用press()函数把pyautogui.KEYBOARD_KEYS里面按键对应的字符串输入进去。

    
    #  ENTER键pyautogui.press('enter')#  F1键pyautogui.press('f1')#  左方向键pyautogui.press('left')

    press()函数其实是keyDown()和keyUp()函数的包装,模拟的按下然后松开两个动作。这两个函数可以单独调用。例如,按下shift键的同时按3次左方向键:

        #  按下`shift`键pyautogui.keyDown('shift')pyautogui.press('left')pyautogui.press('left')pyautogui.press('left')#  松开`shift`键pyautogui.keyUp('shift')

    和typewrite()函数一样,可以用数组把一组键传入press()。

            pyautogui.press(['left', 'left', 'left'])
  • hotkey()函数

    为了更高效的输入热键,PyAutoGUI提供了hotkey()函数来绑定若干按键:

    pyautogui.hotkey('ctrl', 'shift', 'ese')

    等价于

    pyautogui.keyDown('ctrl')
    pyautogui.keyDown('shift')
    pyautogui.keyDown('esc')
    pyautogui.keyUp('esc')
    pyautogui.keyUp('shift')
    pyautogui.keyUp('ctrl')
  • KEYBOARD_KEYS

    print(pyautogui.KEYBOARD_KEYS)

消息弹窗

PyAutoGUI通过Tkinter实现了4种纯Python的消息弹窗函数

  • alert()函数

    pyautogui.alert(text='', title='', button='OK')

    显示一个简单的带文字和OK按钮的消息弹窗。用户点击后返回button的文字。

  • confirm()函数

    
    #  OK和Cancel按钮的消息弹窗pyautogui.confirm(text='', title='', buttons=['OK', 'Cancel'])#  10个按键0-9的消息弹窗pyautogui.confirm(text='', title='', buttons=range(10))

    显示一个简单的带文字、OK和Cancel按钮的消息弹窗,用户点击后返回被点击button的文字,支持自定义数字、文字的列表。

  • prompt()函”)

    pyautogui.prompt(text='', title='' , default='')

    可以输入的消息弹窗,带OK和Cancel按钮。用户点击OK按钮返回输入的文字,点击Cancel按钮返回None。

  • password)函

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

    样式同prompt(),用于输入密码,消息用*表示。带OK和Cancel按钮。用户点击OK按钮返回输入的文字,点击Cancel按钮返回None。

截屏函数

  • screenshot()函数
    screenshot()函数会返回Image对象(参考Pillow或PIL模块文档),也可以设置文件名:

    import pyautogui
    im1 = pyautogui.screenshot()
    im2 = pyautogui.screenshot('my_screenshot.png')

    如果你不需要截取整个屏幕,还有一个可选的region参数。你可以把截取区域的左上角XY坐标值和宽度、高度传入截取。

    im = pyautogui.screenshot(region=(0, 0, 300 ,400))

    安装Pillow pip install Pillow

  • 定位函数

    可以定位截图在屏幕上的坐标位置。

    还是几个定位函数。都是从左上角原点开始向右向下搜索截图位置:

    1. locateOnScreen(image,grayscale=False):返回找到的第一个截图Image对象在屏幕上的坐标(left, top, width,height),如果没找到返回None
    2. locateCenterOnScreen(image, grayscale=False):返回找到的第一个截图Image对象在屏幕上的中心坐标(x, y),如果没找到返回None
    3. locateAllOnScreen(image, grayscale=False):返回找到的所有相同截图Image对象在屏幕上的坐标(left, top, width, height)的生成器
    4. locate(needleImage, haystackImage, grayscale=False):返回找到的第一个截图Image对象在haystackImage里面的坐标(left, top,width, height),如果没找到返回None
    5. locateAll(needleImage, haystackImage, grayscale=False):返回找到的所有相同截图Image对象在haystackImage里面的坐标(left, top, width, height)的生成器
  • 灰度值匹配

    可以把grayscale参数设置为True来加速定位(大约提升30%),默认为False。这种去色(desaturate)方法可以加速定位,但是也可能导致假阳性(false-positive)匹配:

    import pyautogui
    button7location = pyautogui.locateOnScreen('pyautogui/calc7key.png',grayscale=True)
    button7location
  • 像素匹配

    要获取截屏某个位置的RGB像素值,可以用Image对象的getpixel()方法:

    import pyautogui
    im = pyautogui.screenshot()
    im.getpixel((100, 200))

    也可以用PyAutoGUI的pixel()函数,是之前调用的包装:

    pyautogui.pixel(100, 200)

    如果你只是要检验一下指定位置的像素值,可以用pixelMatchesColor()函数,把X、Y和RGB元组值穿入即可:

    pyautogui.pixelMatchesColor(100, 200, (255, 255, 255))

    tolerance参数可以指定红、绿、蓝3种颜色误差范围:

    pyautogui.pixelMatchesColor(100, 200, (255, 255, 245), tolerance=10)

Pyautogui 实现键盘鼠标动作相关推荐

  1. 用C#实现键盘鼠标动作捕获

    由于近期需要编写一个程序,通过右键退出播放,一般情况下,只在鼠标离开运行程序的窗口,就不能捕获键盘鼠标的动作了,原来只熟悉delphi的开发,由于delphi监测键盘鼠标动作需要封装DLL,以钩子的形 ...

  2. 【Python】实现键盘鼠标动作录制和执行的小工具

    突发奇想做一个可以实现鼠标键盘操作录制,并可以回放操作的小工具.依托于pynput模块来实现鼠标键盘的控制,tkinter来实现图形界面的绘制.分为以下几个步骤: 一 录制(记录过程,并将用户的操作保 ...

  3. 钩子函数-建立键盘鼠标动作记录与回放

    内容:很多的教学软件或系统监视软件可以自动记录回放用户的输入文字或点击按钮等操作操作,这个功能的实现是使用 了windows的hook函数. windows提供api函数setwindowshooke ...

  4. 使用UInput模拟系统键盘鼠标动作 UInput driver分析

    当uinput driver已经insmod, 且node 已经建立后.即可使用它们传递系统输入设备消息. <wbr></wbr> 1. 打开UInputDevice: 应用程 ...

  5. Windows API——SendInput总结(模拟键盘鼠标动作)

    SendInput()函数: SendInput()函数用于合成键盘事件和鼠标事件,用来模拟鼠标或者键盘操作. 函数原型: UINT SendInput([in] UINT cInputs,[in] ...

  6. 可二次开发的USB键盘鼠标 Lao-UKM V3.1 (简介 应用举例)

    USB键盘鼠标模拟器简介 用一句话来阐述,就是一个可以2次开发的USB键盘鼠标,硬件如图: 控制命令从左侧的串口进入,经过转化变成标准的USB键盘鼠标操作从右侧输出, USB插入电脑就是标准的键盘鼠标 ...

  7. pyautogui: 有了Python键盘鼠标都可以省着用了

    原文链接:http://www.juzicode.com/archives/3560 pyautogui可以用来控制键盘鼠标模拟人为操作,从而实现某些需要人工操作才能控制的场景,比如某些应用软件的测试 ...

  8. python使用笔记:pyautogui自动化控制鼠标和键盘

    标题 安装 获取当前屏幕分辨率 pyautogui鼠标操作 获取/移动鼠标位置 鼠标点击 鼠标拖拽 移动后按下/松开 滚轮 pyautogui键盘操作 提示信息 alert 弹窗 option 选择框 ...

  9. pyautogui自动化控制鼠标和键盘操作

    pyautogui自动化控制鼠标和键盘操作 安装 pyautogui鼠标操作样例 pyautogui键盘操作样例 按键支持 提示信息 alert option password prompt 截屏 整 ...

最新文章

  1. 前端服务器共享的文件产品内容,Skype for Business Server 2015-04-前端服务器-2-创建一个文件共享...
  2. 中国软件业真的到了该反思的时候了
  3. 第一章计算机基础知识第一节,第一章 计算机基础知识 第一节
  4. 苹果智能车芯片已基本就绪!最新造车进展曝光,股价一夜暴涨4000亿
  5. Spring学习10之动态代理
  6. .Net 多线程 异步编程 Await、Async和Task
  7. 【面向对象】类的特殊成员方法
  8. 你确定你真的理解“双亲委派“了吗?!
  9. Springt Boot(7)----一种快捷搭建Spring Boot应用
  10. 计算机原理课 如何在中小学课堂中变成有趣,在课堂中如何发挥电教辅助教学优势...
  11. 启动Tomcat出现Using CATALINA_BASE
  12. golang笔记(1)-数据库查询结果映射至结构体
  13. “三低”用户养活的互联网
  14. 设计adm和CPU计算机组装方案,成熟的解决方案:CPU风扇(AMD和INTEL)的详细拆卸和安装方法(图形教程)...
  15. 开机要按F1的解决方法
  16. 手写VIO学习总结(二)
  17. Echart 仪表盘 样式调整
  18. d3dx9_35.dll如何修复
  19. python signal处理
  20. 四种主要网络IO虚拟化模型

热门文章

  1. P1498 南蛮图腾---洛谷(分冶)
  2. java最简单的kafka生产者和消费者,未结合spring
  3. 如何让无源蜂鸣器响起来
  4. 思维导图 基础篇(05)思维方法-高度思维
  5. JavaScript倒计时算法(计算剩余多少天)实现
  6. 嵌入式stm32基础项目开发:心率检测仪的设计与实现
  7. 站群教程SEO推广(SEO教程)
  8. HTML CSS xmind总结
  9. 崎岖回归之路 圆明园十二生肖兽首铜像的故事
  10. 鸿蒙三部曲 吞噬星空,我吃西红柿最新作品竟然是它?看来鸿蒙金榜第四名已有归属...