包括用於控制鍵盤和鼠標,在屏幕上查找顏色和位圖以及顯示警報的功能 - 所有這些都是以跨平台,高效和簡單的方式進行的。適用於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