Python直接控制鼠標(biāo)鍵盤模塊 pyautogui

Python直接控制鼠標(biāo)鍵盤模塊 pyautogui
參考文章:http://www.chenxm.cc/post/547.html
安裝

pip install pyautogui

官網(wǎng):

http://pyautogui.readthedocs.io/en/latest/

github:

https://github.com/asweigart/pyautogui

介紹:
PyAutoGUI可以模擬移動(dòng)鼠標(biāo),單擊鼠標(biāo),用鼠標(biāo)拖動(dòng),按鍵,按住鍵,還可以按鍵盤熱鍵組合。
基礎(chǔ)操作

>>> import pyautogui
# 獲取屏幕尺寸
>>> screenWidth, screenHeight = pyautogui.size()
# 獲取當(dāng)前坐標(biāo)位置
>>> currentMouseX, currentMouseY = pyautogui.position()
# 鼠標(biāo)移動(dòng)到坐標(biāo)為100,150的位置
>>> pyautogui.moveTo(100, 150)
# 鼠標(biāo)左擊
>>> pyautogui.click()
# 鼠標(biāo)移動(dòng)10個(gè)像素
>>> pyautogui.moveRel(None, 10)  # move mouse 10 pixels down
# 鼠標(biāo)雙擊
>>> pyautogui.doubleClick()
>>> pyautogui.moveTo(500, 500, duration=2, tween=pyautogui.easeInOutQuad)  # use tweening/easing function to move mouse over 2 seconds.
# 鍵盤輸入Hello world! 間隔為0.25秒
>>> pyautogui.typewrite('Hello world!', interval=0.25)  # type with quarter-second pause in between each key
# 按鍵 esc
>>> pyautogui.press('esc')
# shift按下
>>> pyautogui.keyDown('shift')
# 按鍵左方向鍵
>>> pyautogui.press(['left', 'left', 'left', 'left', 'left', 'left'])
# shift彈起
>>> pyautogui.keyUp('shift')
# 組合件 ctrl +c
>>> pyautogui.hotkey('ctrl', 'c')

保護(hù)措施:
PyAutoGUI函數(shù)增加延遲為2.5秒:

import pyautogui
pyautogui.PAUSE = 2.5
當(dāng)pyautogui.FAILSAFE = True時(shí),如果把鼠標(biāo)光標(biāo)在屏幕左上角,PyAutoGUI函數(shù)就會(huì)產(chǎn)生pyautogui.FailSafeException異常。
import pyautogui
pyautogui.FAILSAFE = True

鼠標(biāo)操作:
移動(dòng)

import pyautogui
width, hight = pyautogui.size()
pyautogui.moveTo(width/2, hight/2) # 基本移動(dòng)
pyautogui.moveTo(200, 200, duration=2) # 移動(dòng)過(guò)程持續(xù)2s完成
pyautogui.moveTo(None, 100) # X方向不變,Y方向移動(dòng)到100
pyautogui.moveRel(-40, 500) # 相對(duì)位置移動(dòng)

拖拽
拖拽的意思是:按下鼠標(biāo)鍵并拖動(dòng)鼠標(biāo)。PyAutoGUI提供了兩個(gè)函數(shù):dragTo() 和 dragRel()。它的參數(shù)和moveTo() 和 moveRel() 一樣。

# 點(diǎn)擊+向下拖動(dòng)
pyautogui.click(941, 34, button='left')
pyautogui.dragRel(0, 100, button='left', duration=5)

點(diǎn)擊
click()函數(shù)就是讓鼠標(biāo)點(diǎn)擊,默認(rèn)是單擊左鍵,參數(shù)可以設(shè)置:

pyautogui.click(x=moveToX, y=moveToY, clicks=num_of_clicks, interval=secs_between_clicks, button='left')
其中,button屬性可以設(shè)置成left,middle和right。
pyautogui.doubleClick():鼠標(biāo)雙擊,其實(shí)就是執(zhí)行兩次click()函數(shù)。
pyautogui.rightClick():右擊
pyautogui.middleClick():中擊
pyautogui.tripleClick(
pyautogui.click(300, 400, button='right') # 包含了move的點(diǎn)擊,右鍵
pyautogui.click(clicks=2, interval=0.25) # 雙擊,間隔0.25s

#  雙擊左鍵
pyautogui.click(clicks=2)
#  兩次單擊之間停留0.25秒
pyautogui.click(clicks=2, interval=0.25)
#  三擊右鍵
pyautogui.click(button='right', clicks=2, interval=0.25)
鼠標(biāo)按下和松開(kāi)兩個(gè)事件可以分開(kāi)處理:
pyautogui.mouseDown(x=moveToX, y=moveToY, button='left')
pyautogui.mouseUp(x=moveToX, y=moveToY, button='left')

滾輪
它只接受一個(gè)整數(shù)。如果值為正往上滾,值為負(fù)往下滾。

pyautogui.scroll(-10)

鍵盤操作
輸入文字

pyautogui.click(100, 200)
pyautogui.typewrite('hello world!')

如果是中文鍵是復(fù)制

精確控制鍵盤
按鍵的按下和釋放 和鼠標(biāo)按鍵非常類似。

keyDown():按下某個(gè)鍵
keyUp():松開(kāi)某個(gè)鍵
press():一次完整的擊鍵,前面兩個(gè)函數(shù)的組合。
pyautogui.press('shift') # 切換輸入法的中英文
pyautogui.press(['#', ' ']) # press 可以對(duì)單個(gè)字符或者列表進(jìn)行操作
pyautogui.press(['c', 'h', 'e', 'n'])
pyautogui.press(['x', 'i','n'])
pyautogui.press(['m', 'i', 'n','g'])
pyautogui.press(' ')
# 陳新明

組合鍵hotKey

pyautogui.hotkey('shift', 'a') # 可以使用組合鍵,等同于以下代碼
'''
pyautogui.keyDown('shift')
pyautogui.keyDown('a')
pyautogui.keyUp('shift')
pyautogui.keyUp('a')
'''

截圖

import pyautogui
im1 = pyautogui.screenshot()
im2 = pyautogui.screenshot('my_screenshot.png')
screenshot()需要花費(fèi)100毫秒
如果你不需要截取整個(gè)屏幕,還有一個(gè)可選的region參數(shù)。你可以把截取區(qū)域的左上角XY坐標(biāo)值和寬度、高度傳入截取。
im = pyautogui.screenshot(region=(0, 0, 300 ,400))
讀取截圖的圖片
import pyautogui
pyautogui.locateOnScreen('my_screenshot.png')
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容