PyAutoGUI是一個Python語言的鍵鼠自動化庫,簡單來說和按鍵精靈的功能一樣。但是因爲是Python的類庫,所以可以使用Python代碼配合一些其他類庫完成更加強大的功能。下面讓我爲大家介紹一下吧。
安裝
從pip安裝即可。
pip install pyautogui
稍等一下安裝就完畢了。
使用介紹
簡單介紹一下PyAutoGUI的函數以及使用方法。
鼠標操作函數
操作鼠標點擊的函數。
函數 | 簡單說明 |
---|---|
move(x,y)、 moveTo(x,y) | 移動鼠標,前者移動相對位置,後者移動到指定位置 |
click(x,y)、doubleClick、rightClick | 單擊/雙擊/右擊,無參版本在當前位置點擊鼠標 |
drag(x,y)、dragTo(x,y) | 拖動鼠標 |
mouseDown、mouseUp | 按下按鍵,鬆開按鍵 |
scroll | 向下滾動鼠標滾輪的函數 |
鍵盤操作函數
操作鍵盤按鍵的函數。
函數 | 簡介 |
---|---|
press(‘left’,press=3) | |
hotkey(‘ctrl’,‘s’) | 按下Ctrl+S組合鍵 |
keyDown、keyUp | 按下和鬆開鍵盤按鍵 |
提示框函數
PyAutoGUI可以顯示提示框,這時候程序會暫停運行,直到用戶點擊提示框。
函數 | 簡介 |
---|---|
alert(text=’’,title=’’,button=[‘OK’,‘Cancle’]) | 顯示警告對話框 |
confirm() | 顯示確認對話框 |
prompt() | 顯示提示對話框 |
password() | 顯示密碼輸入對話框 |
屏幕截圖和定位函數
截取屏幕的函數,也可以從屏幕中尋找匹配的圖片,並返回其座標。你可以事先保存一些按鈕的截圖,然後通過這種方式定位按鈕的位置,然後點擊。
函數 | 簡介 |
---|---|
screenshot(‘image.png’) | 保存截圖並返回截圖,無參版本直接返回截圖不保存 |
center(‘image.png’) | 從屏幕上尋找圖片位置,返回框位置 |
locateOnScreen(‘img’) | 從屏幕尋找圖片位置,直接返回座標 |
簡單例子
先來看看官網的畫圖例子,我把代碼稍微改了一下。運行這個例子需要先打開一個畫圖窗口,並放到全屏,然後運行Python代碼,迅速將畫圖程序切換到前臺。這樣就可以看到PyAutoGUI控制鼠標來繪製精確的直線了。
import pyautogui
import time
time.sleep(3)
distance = 100
pyautogui.moveTo(400, 300)
while distance > 0:
pyautogui.drag(distance, 0, duration=0.1)
distance -= 5
pyautogui.drag(0, distance, duration=0.1)
pyautogui.drag(-distance, 0, duration=0.1)
distance -= 5
pyautogui.drag(0, -distance, duration=0.1)
繪製出來的圖片應該是這樣的。
如果要完成一些實際工作,難免會遇到識別點擊複雜樣式圖片的場景。前面提到了截圖和圖片識別可以比較好的解決這個問題。這個例子需要先安裝OpenCV庫和opencv-python包,安裝完畢之後就可以運行了。這裏將win10計算器的幾個按鈕保存成圖片,然後用PyAutoGUI的圖片識別功能找到按鈕的座標,這樣就可以無障礙的點擊按鈕,無需關心窗口的位置。特別提一點,下面的confidence參數需要安裝了OpenCV纔可以使用,它允許我們模糊匹配圖片。
import pyautogui
import time
time.sleep(3)
# Windows計算器的按鈕截圖
five = '5.png'
eight = '8.png'
multiply = 'multiply.png'
equals = 'equals.png'
# 圖片識別和點擊的函數
def find_and_click(image):
x, y = pyautogui.locateCenterOnScreen(image, confidence=0.9)
pyautogui.click(x, y)
# 執行5*8=
find_and_click(five)
find_and_click(multiply)
find_and_click(eight)
find_and_click(equals)
這個例子的截圖和代碼都在我的github上,歡迎大家查看。
https://github.com/techstay/python-study/tree/master/pyautogui-sample