包括用于控制键盘和鼠标,在屏幕上查找颜色和位图以及显示警报的功能 - 所有这些都是以跨平台,高效和简单的方式进行的。适用于Mac OS X,Windows和X11

中文文档:https://blog.csdn.net/qq_30462003/article/details/100130472

安装:pip3 install AutoPy -i https://pypi.douban.com/simple

一.鼠标移动

  1.  
  1. #autopy.mouse.move(100, 100) #移动鼠标到指定点--相对于屏幕
    #鼠标直接移到指定点,没有移动过程
  2.  
  3. #autopy.mouse.smooth_move(500, 500) #移动鼠标到指定点--相对于屏幕
    # 有直线移动过程
  4.  
  5. i=autopy.mouse.location() #返回鼠标的当前位置--相对于屏幕
    #(500.0, 500.0)
  6.  
  7. autopy.mouse.toggle(autopy.mouse.Button.LEFT, True) #按下指定鼠标键
    #autopy.mouse.Button.LEFT 鼠标左键
    #autopy.mouse.Button.RIGHT 鼠标右键
    #autopy.mouse.Button.MIDDLE 鼠标中键
    #None 默认左键
  8.  
  9. autopy.mouse.toggle(autopy.mouse.Button.LEFT, False) #释放指定鼠标键
    #注意释放,要不然会电脑会一直按着那个键,直到你终止程序
  10.  
  11. autopy.mouse.click(None) # 点左键一下,然后松开
    autopy.mouse.click(autopy.mouse.Button.RIGHT) # 点右键一下,然后松开
    autopy.mouse.click(autopy.mouse.Button.LEFT, 3) # 按住左键保持3秒,然后松开
  12.  
  13. print(i)
  1.  

二.键盘

  1. autopy.key.toggle(autopy.key.Code.UP_ARROW, True, []) #按下方向键
    autopy.key.toggle(autopy.key.Code.UP_ARROW, False, []) #释放方向键
  2.  
  3. autopy.key.toggle(autopy.key.Code.UP_ARROW,True,[autopy.key.Modifier.CONTROL],0) #按键或者释放键
    #参数1 键盘代码(看下表)或键名
    #参数2 True表示按下,False松开
    #参数3 同时按下的修饰键
    #参数4 延迟n秒后再往下执行
    autopy.key.toggle(autopy.key.Code.UP_ARROW, False, [autopy.key.Modifier.CONTROL], 0)
    #注意释放,要不然会电脑会一直按着那个修饰键,直到你终止程序
  4.  
  5. autopy.key.tap(autopy.key.Code.CONTROL, [], 2) #对autopy.key.toggle进行的封装,方便使用,按下并自动释放.
    print('xx')
  6.  
  7. autopy.key.type_string('Hello123', 0) #输入相应的字符串
    #参数2 每分钟的字符个数,0表示最快

参数1:键盘代码:

autopy.key.Code.F1
autopy.key.Code.F2
autopy.key.Code.F3
autopy.key.Code.F4
autopy.key.Code.F5
autopy.key.Code.F6
autopy.key.Code.F7
autopy.key.Code.F8
autopy.key.Code.F9
autopy.key.Code.F10
autopy.key.Code.F11
autopy.key.Code.F12

autopy.key.Code.ALT
autopy.key.Code.SHIFT
autopy.key.Code.CONTROL
autopy.key.Code.META                           win功能键
autopy.key.Code.BACKSPACE
autopy.key.Code.DELETE
autopy.key.Code.CAPS_LOCK
autopy.key.Code.ESCAPE
autopy.key.Code.SPACE
autopy.key.Code.RETURN                        Enter回车键

autopy.key.Code.HOME
autopy.key.Code.END
autopy.key.Code.PAGE_DOWN
autopy.key.Code.PAGE_UP
autopy.key.Code.UP_ARROW      向上箭头键
autopy.key.Code.DOWN_ARROW
autopy.key.Code.RIGHT_ARROW
autopy.key.Code.LEFT_ARROW

参数2:修饰键

at.key.Modifier.ALT  
at.key.Modifier.SHIFT  
at.key.Modifier.CONTROL  
at.key.Modifier.META win功能键

三.使用位图

所有autopy的bitmap都能在autopy.bitmap模块中找到(准确的说,大多数都在autop.bitmap.Bitmap类中找到)

目前有三种方式在autopy中加载位图:

1)截取屏幕截图

2)加载文件

3)

  1. tupin=autopy.bitmap.capture_screen(rect=((100,90),(400,100))) #截屏
  2. #返回位图对象
  3. #rect=((100,90),(400,100)) 在矩形范围内寻找;(100, 90)是矩形起点坐标;(400, 100)是矩形的宽和高;注意:矩形不要超出屏幕范围否则会报错
  4. #rect如果省略 截取全屏
  5. print(type(tupin),tupin) #<class 'Bitmap'> <Bitmap object at 0x0000000002AB6580>
  6. rgb=autopy.bitmap.capture_screen().get_color(500,500) #先截屏,然后返回位图中指定点的颜色(十进制形式)
  7. #
  8. #指定坐标--相对于屏幕
  9. print(rgb)
  10. rgb16=hex(rgb) #转化成16进制 0xfffae3
  11. print(rgb16)
  12. pcolor=autopy.screen.get_color(500, 500) #返回屏幕指定点颜色--十进制形式
  13. print(pcolor)
  14. c=autopy.color.hex_to_rgb(pcolor) #十进制颜色值转换成RGB形式颜色值
  15. #(153, 204, 255)
  16. c=autopy.color.rgb_to_hex(255, 0, 0) #把RGB转换成十进制形式( 16711680)
  17. print('c=',c)
  18.  
  19. tupin.save('lm.jpeg') #保存图片
  20. #AutoPy目前只支持BMP(特别慢)、jpeg和PNG文件类型
  21.  
  22. i=autopy.screen.scale() #返回一个坐标点(point)中含有几个像素点(pixel)
  23. i=autopy.screen.size() #返回屏幕的坐标点尺寸--坐标点数
  24. #(1920.0, 1080.0)
  25.  
  26. i=autopy.screen.is_point_visible(500,500) #返回布尔类型,如果这个坐标点在屏幕的边界内则True,否则False
  27.  
  28. tu=autopy.bitmap.Bitmap.open('马.png') #加载位图
  29. i=tu.get_color(0,80) #返回指定点的颜色--十进制形式
  30.  
  31. i=tu.find_color((227, 246, 252),tolerance=0,start_point=(101,101)) #寻找指定颜色-返回找到的第一个点
  32. #如果找到返回坐标(0.0, 80.0),如果没找到返回None
  33. #参数1 RGB-元组
  34. #tolerance 是一个在[0,1]之间的float值,为0时是精确匹配--默认0,为1时将匹配所有-----匹配精度
  35. #start_point 开始寻找点
  36. #【个人:先循环纵坐标,再循环横坐标】
  37.  
  38. i = tu.find_color((227, 246, 252), tolerance=0, rect=((100,100),(200,200)))
  39. #返回值不在矩形范围内 不知道怎么回事,请知道的私密我告诉我,万分感谢 ???????
  40.  
  41. i=tu.find_every_color((227, 246, 252)) # 寻找指定颜色的坐标-返回找到的所有点
  42. #[(0.0, 80.0), (0.0, 95.0), (0.0, 143.0), (2.0, 95.0), (4.0, 288.0), (4.0, 289.0), (4.0, 290.0), (4.0, 291.0), (4.0, 292.0), (4.0, 293.0), (4.0, 294.0), (4.0, 295.0), (4.0, 304.0), (4.0, 305.0), (4.0, 306.0), (4.0, 307.0), (4.0, 308.0), (4.0, 309.0), (4.0, 310.0), (4.0, 311.0), (4.0, 312.0), (4.0, 313.0), (4.0, 314.0), (4.0,315.0), (4.0, 316.0), (4.0, 317.0), (4.0, 318.0), (4.0, 319.0), (5.0, 95.0), (20.0, 192.0), (21.0, 192.0), (22.0, 6.0), (23.0, 6.0), (33.0, 216.0), (39.0, 216.0),(64.0, 201.0), (95.0, 168.0), (139.0, 220.0), (146.0, 344.0), (147.0, 344.0), (166.0, 332.0), (166.0, 333.0), (166.0, 340.0), (166.0, 341.0), (167.0, 332.0), (167.0, 333.0), (178.0, 315.0), (178.0, 316.0), (178.0, 317.0), (185.0, 341.0), (231.0, 303.0), (233.0, 304.0), (274.0, 319.0), (275.0, 319.0), (296.0, 351.0), (304.0,345.0), (305.0, 344.0), (307.0, 105.0), (313.0, 100.0), (314.0, 345.0), (315.0, 345.0), (328.0, 346.0), (368.0, 348.0), (374.0, 354.0), (392.0, 66.0), (395.0, 358.0), (427.0, 289.0), (427.0, 290.0), (450.0, 351.0), (479.0, 226.0), (479.0, 227.0), (479.0, 237.0), (479.0, 238.0), (480.0, 224.0), (481.0, 223.0), (483.0, 303.0),(484.0, 288.0), (484.0, 312.0), (484.0, 313.0), (485.0, 288.0), (485.0, 312.0), (485.0, 313.0), (504.0, 217.0), (505.0, 217.0), (510.0, 191.0), (511.0, 4.0), (511.0, 43.0), (513.0, 170.0), (521.0, 106.0), (526.0, 95.0), (527.0, 94.0), (527.0, 95.0), (543.0, 126.0), (544.0, 42.0), (544.0, 43.0), (544.0, 171.0), (545.0, 42.0)]
  43. x=tu.count_of_color((227, 246, 252)) #返回指定颜色的总点数
  44.  
  45. i=tu.point_in_bounds(549,100) #判断指定坐标是否在图内
  46. #指定坐标在图内返回True ,不在图内返回False
  47.  
  48. i=tu.rect_in_bounds(((500,300),(51,10))) #给出的矩形全部包含在图的边界中,返回True
  49. #(500,300) 矩形的左上角坐标
  50. #(51,10) 宽和高
  51.  
  52. tu1 = autopy.bitmap.Bitmap.open('马眼.png')
  53. i=tu.find_bitmap(tu1,tolerance=0,rect=((100,90),(400,10)),start_point=(450,80)) #找图
  54. #在tu图中寻找图tu1,找到返回第一个坐标,没找到返回None
  55. #tolerance 是一个在[0,1]之间的float值,为0时是精确匹配--默认0,为1时将匹配所有-----匹配精度
  56. #start_point=(450,80) 开始寻找点--相对于图片的坐标
  57. #rect = ((100, 90), (400, 10)) 在矩形范围内寻找;(100, 90)是矩形起点坐标;(400, 10)是矩形的宽和高;注意:矩形不要超出图片范围否则会报错
  58. #(486.0, 92.0)
  59. i=tu.find_every_bitmap(tu1) #找图
  60. #返回找到的所有坐标--[(486.0, 92.0)]
  61. i=tu.count_of_bitmap(tu1) #返回找到图像的数量
  62. tu2=tu.cropped(rect=((100,100),(200,200))) #从tu图中截取图像,返回新图像
  63. #rect截取范围
  64. tu2.save('tu2.jpeg')
  65.  
  66. i=tu1.is_bitmap_equal(tu2) #判断两个图像是否相等
  67. #tolerance 是一个在[0,1]之间的float值,为0时是精确匹配--默认0,为1时将匹配所有-----匹配精度
  68.  
  69. print(i)

四.弹窗

  1. autopy.alert.alert('hello','python world','','')

参数1:弹窗信息内容

参数2:弹窗信息标题

参数3:无法设置。由于Win32 API的限制,Windows当前替换 default_button为“确定”(如果给定)

参数4:无法设置。由于Win32 API的限制,Windows当前替换 cancel_button(如果给定)替换为“取消”。

确定按钮返回True,取消按钮返回False

以上代码下载:https://pan.baidu.com/s/1k4XMrgOZCWxwkTxTG6C3YA

python--AutoPy库的更多相关文章

  1. 【Python基础】安装python第三方库

    pip命令行安装(推荐) 打开cmd命令行 安装需要的第三方库如:pip install numpy 在安装python的相关模块和库时,我们一般使用“pip install  模块名”或者“pyth ...

  2. python+paramiko库+svn写的自动化部署脚本

    第一篇博文 直接开门见山的说了. 这是件什么事?:每次部署都是复制本地的文件粘贴到服务器端,因为路径复杂,所以费时且手工容易出漏洞. 一直在想有什么办法可以解决这种,因为以前在微软的一个牛人同事做过一 ...

  3. 安装Python算法库

    安装Python算法库 主要包括用NumPy和SciPy来处理数据,用Matplotlib来实现数据可视化.为了适应处理大规模数据的需求,python在此基础上开发了Scikit-Learn机器学习算 ...

  4. Python标准库14 数据库 (sqlite3)

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! Python自带一个轻量级的关系型数据库SQLite.这一数据库使用SQL语言.S ...

  5. 常用python机器学习库总结

    开始学习Python,之后渐渐成为我学习工作中的第一辅助脚本语言,虽然开发语言是Java,但平时的很多文本数据处理任务都交给了Python.这些年来,接触和使用了很多Python工具包,特别是在文本处 ...

  6. [Python] 机器学习库资料汇总

    声明:以下内容转载自平行宇宙. Python在科学计算领域,有两个重要的扩展模块:Numpy和Scipy.其中Numpy是一个用python实现的科学计算包.包括: 一个强大的N维数组对象Array: ...

  7. python常用库

    本文由 伯乐在线 - 艾凌风 翻译,Namco 校稿.未经许可,禁止转载!英文出处:vinta.欢迎加入翻译组. Awesome Python ,这又是一个 Awesome XXX 系列的资源整理,由 ...

  8. python标准库00 学习准备

    Python标准库----走马观花 python有一套很有用的标准库.标准库会随着python解释器一起安装在你的电脑上的.它是python的一个组成部分.这些标准库是python为你准备的利器,可以 ...

  9. Python标准库:内置函数hasattr(object, name)

    Python标准库:内置函数hasattr(object, name) 本函数是用来判断对象object的属性(name表示)是否存在.如果属性(name表示)存在,则返回True,否则返回False ...

  10. python标准库xml.etree.ElementTree的bug

    使用python生成或者解析xml的方法用的最多的可能就数python标准库xml.etree.ElementTree和lxml了,在某些环境下使用xml.etree.ElementTree更方便一些 ...

随机推荐

  1. 第一章 Scala基础篇

    目录 一.Scala基础语法 (一) 变量.类型.操作符 1.变量申明 2.字符串 3.数据类型 4.操作符 (二)循环判断 1.块表达式 2.条件表达式 3.循环表达式 (三)方法和函数 1.方法 ...

  2. # codeblocks 使用技巧+伪单文件编译

    codeblocks 使用技巧+伪单文件编译 shift+F2打开和隐藏左侧工作空间 F2 打开和隐藏下面控制台 CTRL+Shift+c 注释,CTRL+Shift+x取消注释 view->p ...

  3. Spring实战(六)自动装配的歧义性

    1.Spring进行自动装配时碰到的bean歧义性问题. 在进行自动装配时,只有仅有一个bean匹配所需结果时,才是可行的. 如果不仅仅一个bean能够匹配结果,例如一个接口有多个实现,这种歧义性会阻 ...

  4. 垃圾分类API

    ###自从上月开始实行垃圾分类,整个上海人都已经“疯掉”了.那么,我们应该怎么识别什么是“垃圾”呢? 这里,我提供了并整理了几个api,其中包括图像识别,垃圾分类查找,根据关键字或者图片的内容来进行查 ...

  5. string库

    Lua字符串库小集 1. 基础字符串函数: 字符串库中有一些函数非常简单,如: 1). string.len(s) 返回字符串s的长度: 2). string.rep(s,n) 返回字符串s重复n次的 ...

  6. 4-Perl 数据类型

    1.Perl 数据类型Perl 是一种弱类型语言,所以变量不需要指定类型,Perl 解释器会根据上下文自动选择匹配类型.Perl 有三个基本的数据类型:标量.数组.哈希.以下是这三种数据类型的说明:1 ...

  7. 如何解决windows 80端口被占用的情况

    window下如果在安装某个软件或者启动tomcat时 会遇到80端口被占用的情况,通过命令 netstat -ano 查看端口被占用情况 找到占用80端口的进程ID,然后我们在任务管理器当中将这个进 ...

  8. Kendall tau距离(即两个内容相同的数组中逆序数对的数量)(算法》P220 第2.5.3.2小节)

    一组排列就是一组N个整数的数组,其中0~N-1的每个数都只出现一次.两个排列之间的 Kendall tau距离就是在两组排列中相对顺序不同的数对的数目.例如,0 3 1 6 2 5 4和1 0 3 6 ...

  9. eclipse中ctrl+1什么意思

    eclipse中ctrl+1是一个快捷键,能快速的现实光标所在行的问题,并给出一些修改方案. 当eclipse编辑器在你编辑代码阶段,能检测到编辑时异常(错误)会在错误代码行前面出现一个红色的叉叉,这 ...

  10. 【转】CnBlogs自定义博客样式

    文章有一个好的排版,将能够增加阅读者对其内容的兴趣. 本文总结了如何美化博客园中文章的部分显示样式. 1.美化文章标题的显示样式 2.增添LaTex数学公式的显示 3.目录索引的显示 4.添加文章末尾 ...