• python--AutoPy库


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

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

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

    一.鼠标移动

    
    
    #autopy.mouse.move(100, 100)  #移动鼠标到指定点--相对于屏幕
    #鼠标直接移到指定点,没有移动过程

    #autopy.mouse.smooth_move(500, 500) #移动鼠标到指定点--相对于屏幕
    # 有直线移动过程

    i=autopy.mouse.location() #返回鼠标的当前位置--相对于屏幕
    #(500.0, 500.0)

    autopy.mouse.toggle(autopy.mouse.Button.LEFT, True) #按下指定鼠标键
    #autopy.mouse.Button.LEFT 鼠标左键
    #autopy.mouse.Button.RIGHT 鼠标右键
    #autopy.mouse.Button.MIDDLE 鼠标中键
    #None 默认左键

    autopy.mouse.toggle(autopy.mouse.Button.LEFT, False) #释放指定鼠标键
    #注意释放,要不然会电脑会一直按着那个键,直到你终止程序

    autopy.mouse.click(None) # 点左键一下,然后松开
    autopy.mouse.click(autopy.mouse.Button.RIGHT) # 点右键一下,然后松开
    autopy.mouse.click(autopy.mouse.Button.LEFT, 3) # 按住左键保持3秒,然后松开

    print(i)
     

    二.键盘

    autopy.key.toggle(autopy.key.Code.UP_ARROW, True, [])  #按下方向键
    autopy.key.toggle(autopy.key.Code.UP_ARROW, False, []) #释放方向键

    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)
    #注意释放,要不然会电脑会一直按着那个修饰键,直到你终止程序

    autopy.key.tap(autopy.key.Code.CONTROL, [], 2) #对autopy.key.toggle进行的封装,方便使用,按下并自动释放.
    print('xx')

    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)

            tupin=autopy.bitmap.capture_screen(rect=((100,90),(400,100)))  #截屏
            #返回位图对象
            #rect=((100,90),(400,100))   在矩形范围内寻找;(100, 90)是矩形起点坐标;(400, 100)是矩形的宽和高;注意:矩形不要超出屏幕范围否则会报错
            #rect如果省略 截取全屏
            print(type(tupin),tupin)  #<class 'Bitmap'> <Bitmap object at 0x0000000002AB6580>
            rgb=autopy.bitmap.capture_screen().get_color(500,500)  #先截屏,然后返回位图中指定点的颜色(十进制形式)
            # 16775907
            #指定坐标--相对于屏幕
            print(rgb)
            rgb16=hex(rgb)   #转化成16进制   0xfffae3
            print(rgb16)
            pcolor=autopy.screen.get_color(500, 500)  #返回屏幕指定点颜色--十进制形式
            print(pcolor)
            c=autopy.color.hex_to_rgb(pcolor) #十进制颜色值转换成RGB形式颜色值
            #(153, 204, 255)
            c=autopy.color.rgb_to_hex(255, 0, 0)  #把RGB转换成十进制形式( 16711680)
            print('c=',c)
    
            tupin.save('lm.jpeg')  #保存图片
            #AutoPy目前只支持BMP(特别慢)、jpeg和PNG文件类型
    
            i=autopy.screen.scale()  #返回一个坐标点(point)中含有几个像素点(pixel)
            i=autopy.screen.size()  #返回屏幕的坐标点尺寸--坐标点数
            #(1920.0, 1080.0)
    
            i=autopy.screen.is_point_visible(500,500)  #返回布尔类型,如果这个坐标点在屏幕的边界内则True,否则False
    
            tu=autopy.bitmap.Bitmap.open('马.png')  #加载位图
            i=tu.get_color(0,80)  #返回指定点的颜色--十进制形式
    
            i=tu.find_color((227, 246, 252),tolerance=0,start_point=(101,101))  #寻找指定颜色-返回找到的第一个点
            #如果找到返回坐标(0.0, 80.0),如果没找到返回None
            #参数1  RGB-元组
            #tolerance   是一个在[0,1]之间的float值,为0时是精确匹配--默认0,为1时将匹配所有-----匹配精度
            #start_point   开始寻找点
            #【个人:先循环纵坐标,再循环横坐标】
    
            i = tu.find_color((227, 246, 252), tolerance=0, rect=((100,100),(200,200)))
            #返回值不在矩形范围内   不知道怎么回事,请知道的私密我告诉我,万分感谢  ???????
    
            i=tu.find_every_color((227, 246, 252))  # 寻找指定颜色的坐标-返回找到的所有点
            #[(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)]
            x=tu.count_of_color((227, 246, 252))  #返回指定颜色的总点数
    
            i=tu.point_in_bounds(549,100)  #判断指定坐标是否在图内
            #指定坐标在图内返回True ,不在图内返回False
    
            i=tu.rect_in_bounds(((500,300),(51,10)))  #给出的矩形全部包含在图的边界中,返回True
            #(500,300)  矩形的左上角坐标
            #(51,10)  宽和高
    
            tu1 = autopy.bitmap.Bitmap.open('马眼.png')
            i=tu.find_bitmap(tu1,tolerance=0,rect=((100,90),(400,10)),start_point=(450,80))   #找图
            #在tu图中寻找图tu1,找到返回第一个坐标,没找到返回None
            #tolerance   是一个在[0,1]之间的float值,为0时是精确匹配--默认0,为1时将匹配所有-----匹配精度
            #start_point=(450,80)   开始寻找点--相对于图片的坐标
            #rect = ((100, 90), (400, 10))   在矩形范围内寻找;(100, 90)是矩形起点坐标;(400, 10)是矩形的宽和高;注意:矩形不要超出图片范围否则会报错
            #(486.0, 92.0)
            i=tu.find_every_bitmap(tu1)  #找图
            #返回找到的所有坐标--[(486.0, 92.0)]
            i=tu.count_of_bitmap(tu1)  #返回找到图像的数量
            tu2=tu.cropped(rect=((100,100),(200,200)))  #从tu图中截取图像,返回新图像
            #rect截取范围
            tu2.save('tu2.jpeg')
    
            i=tu1.is_bitmap_equal(tu2)  #判断两个图像是否相等
            #tolerance   是一个在[0,1]之间的float值,为0时是精确匹配--默认0,为1时将匹配所有-----匹配精度
    
    
    
            print(i)

    四.弹窗 

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

    参数1:弹窗信息内容

    参数2:弹窗信息标题

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

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

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

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

  • 相关阅读:
    HDU 1198
    HDU 1863
    HDU 1879
    HDU 1233
    HDU 1232
    HDU 1829
    HDU 2473
    hdu 1829 A Bug's Life
    hdu 3038 How Many Answers Are Wrong
    hdu 1198 Farm Irrigation
  • 原文地址:https://www.cnblogs.com/liming19680104/p/11936196.html
Copyright © 2020-2023  润新知