1 安裝
pip install pyautogui
2 學習使用
2.1 加載模塊
import pyautogui
2.2 獲取信息類
電腦屏幕的左上角是位置(0,0),向右X座標增加,向下Y座標增加
# 獲取屏幕尺寸
screenWidth, screenHeight = pyautogui.size()
# 獲取鼠標當前位置
currentMouseX, currentMouseY = pyautogui.position()
用onScreen()
函數來檢查XY座標是否在屏幕上,如果在屏幕上返回True
:
In [1]: import pyautogui
In [2]: pyautogui.onScreen(0, 0)
Out[2]: True
In [3]: pyautogui.onScreen(0, -1)
Out[3]: False
2.3 進行操作類
2.3.1 鼠標
知識點:
import pyautogui
# 函數將鼠標立即移動到屏幕的指定位置:x, y爲座標, duration指定所需秒數
pyautogui.moveTo(x=None, y=None, duration=0.0)
# 函數相對於當前的位置移動鼠標
pyautogui.moveRel(xOffset=None, yOffset=None, duration=0.0)
# 在相應位置點擊鼠標, clicks爲點擊次數, interval爲時間間隔, button屬性可以有:left\middle\right
pyautogui.click(x=None, y=None, clicks=1, interval=0.0, button="left")
# 按下鼠標按鍵
pyautogui.mouseDown(x=None, y=None, button="left", duration=0.0)
# 釋放鼠標按鍵
pyautogui.mouseUp(x=None, y=None, button="left", duration=0.0)
# 執行雙擊鼠標左鍵
pyautogui.doubleClick(x=None, y=None, interval=0.0, button="left", duration=0.0)
# 執行雙擊右鍵
pyautogui.rightClick(x=None, y=None, interval=0.0, duration=0.0)
# 執行雙擊中鍵
pyautogui.middleClick(x=None, y=None, interval=0.0, duration=0.0)
# 將鼠標拖動到一個新的位置
pyautogui.dragTo(x=None, y=None, duration=0.0, button="left")
# 將鼠標拖動到相對當前位置的位置
pyautogui.dragRel(xOffset=0, yOffset=0, duration=0.0, button="left")
# 滾動鼠標, clicks爲滾動像素
pyautogui.scroll(clicks=100, x=None, y=None)
緩動/漸變(Tween / Easing)函數:
緩動/漸變函數的作用是讓光標的移動更炫。如果你不需要用到的話,你可以忽略這些。
緩動/漸變函數可以改變光標移動過程的速度和方向。通常鼠標是勻速直線運動,這就是線性緩動/漸變函數。PyAutoGUI有30種緩動/漸變函數,可以通過pyautogui.ease*?
查看。其中,pyautogui.easeInQuad()
函數可以用於moveTo()
,moveRel()
,dragTo()
和dragRel()
函數,光標移動呈現先慢後快的效果,整個過程的時間還是和原來一樣。而pyautogui.easeOutQuad
函數的效果相反:光標開始移動很快,然後慢慢減速。pyautogui.easeOutElastic
是彈簧效果,首先越過終點,然後再反彈回來。例如:
import pyautogui
# 開始很慢,不斷加速
pyautogui.moveTo(100, 100, 2, pyautogui.easeInQuad)
# 開始很快,不斷減速
pyautogui.moveTo(100, 100, 2, pyautogui.easeOutQuad)
# 開始和結束都快,中間比較慢
pyautogui.moveTo(100, 100, 2, pyautogui.easeInOutQuad)
# 一步一徘徊前進
pyautogui.moveTo(100, 100, 2, pyautogui.easeInBounce)
# 徘徊幅度更大,甚至超過起點和終點
pyautogui.moveTo(100, 100, 2, pyautogui.easeInElastic)
實踐運用:
import pyautogui
# 獲取屏幕尺寸
screenWidth, screenHeight = pyautogui.size()
# 鼠標移動到屏幕中心
pyautogui.moveTo(screenWidth / 2, screenHeight / 2)
# 將鼠標移動到固定位置
pyautogui.moveTo(100, 100)
# 用 "1秒" 的時間移動到固定位置
pyautogui.moveTo(100, 200, duration=1)
# 將鼠標移動到相對當前 "下方100" 的位置
pyautogui.moveRel(0, 100)
# 鼠標左鍵拖拽到屏幕 "100,200" 的位置
pyautogui.dragTo(100, 200, button='left')
# 鼠標左鍵用 "2秒" 拖拽到屏幕 "300,400" 的位置
pyautogui.dragTo(300, 400, 2, button='left')
# 鼠標左鍵用 "2秒" 拖拽到相對當前 "右邊30" 的位置
pyautogui.dragRel(30, 0, 2, button='left')
# 鼠標左鍵單擊
pyautogui.click()
# 鼠標左鍵單擊 "100,200" 位置
pyautogui.click(x=100, y=200)
# 鼠標左鍵雙擊
pyautogui.doubleClick()
# 鼠標左鍵三擊
pyautogui.tripleClick()
# 鼠標右鍵單擊
pyautogui.click(button='right')
# 鼠標右鍵單擊
pyautogui.rightClick()
# 鼠標右鍵間隔0.25秒單擊3次
pyautogui.click(button='right', clicks=3, interval=0.25)
# 鼠標左鍵放下
pyautogui.mouseDown()
# 鼠標左鍵擡起
pyautogui.mouseUp()
# 鼠標滾輪上滾10
pyautogui.scroll(10)
# 鼠標滾輪下滾10
pyautogui.scroll(-10)
2.3.2 鍵盤
知識點:
import pyautogui
# 輸入字符串, interval爲時間間隔
pyautogui.typewrite("message", interval=0.1)
# 按下某個鍵
pyautogui.keyDown("A")
# 鬆開某個鍵
pyautogui.keyUp("A")
# 一次完整的擊鍵,前面兩個函數的組合, presses爲按鍵次數
pyautogui.press("B", presses=5, interval=0.2)
# 直接使用熱鍵函數
pyautogui.hotkey('ctrl', 'a')
PyAutoGUI鍵盤表:
‘enter’(或‘return’ 或 ‘\n’) |
回車 |
‘esc’ |
ESC鍵 |
‘shiftleft’, ‘shiftright’ |
左右SHIFT鍵 |
‘altleft’, ‘altright’ |
左右ALT鍵 |
‘ctrlleft’, ‘ctrlright’ |
左右CTRL鍵 |
‘tab’ (‘\t’) |
TAB鍵 |
‘backspace’, ‘delete’ |
BACKSPACE 、DELETE鍵 |
‘pageup’, ‘pagedown’ |
PAGE UP 和 PAGE DOWN鍵 |
‘home’, ‘end’ |
HOME 和 END鍵 |
‘up’, ‘down’, ‘left’,‘right’ |
箭頭鍵 |
‘f1’, ‘f2’, ‘f3’…. |
F1…….F12鍵 |
‘volumemute’, ‘volumedown’,‘volumeup’ |
有些鍵盤沒有 |
‘pause’ |
PAUSE鍵 |
‘capslock’, ‘numlock’,‘scrolllock’ |
CAPS LOCK, NUM LOCK, 和 SCROLLLOCK 鍵 |
‘insert’ |
INS或INSERT鍵 |
‘printscreen’ |
PRTSC 或 PRINT SCREEN鍵 |
‘winleft’, ‘winright’ |
Win鍵 |
‘command’ |
Mac OS X command鍵 |
實踐應用:
import pyautogui
# 輸入一個字符串
pyautogui.typewrite('Hello world!')
# 每個字母間隔0.25秒輸入一個字符串
pyautogui.typewrite('Hello world!', interval=0.25)
# 鍵入 "a", 然後敲擊左方向鍵, 再鍵入 "b".
pyautogui.typewrite(['a', 'left', 'b'])
# 按鍵
pyautogui.press('esc')
# 連續按鍵
pyautogui.press(['left', 'left', 'left', 'left', 'left', 'left'])
# 鍵盤按下
pyautogui.keyDown('shift')
# 鍵盤釋放
pyautogui.keyUp('shift')
# 熱鍵按住ctrl的同時按下c
pyautogui.hotkey('ctrl', 'c')