随便挑了一張看起來比較高端的圖檔
有些朋友可能玩過按鍵精靈,一個用來操作鍵盤滑鼠完成一些自動化工作的軟體。其實如果你學了Python的話,完全用不着按鍵精靈這種東西了。因為廣泛的Python類庫裡,就有PyAutoGUI這樣可以變成控制鍵盤滑鼠的類庫,有了它,就可以用Python随心所欲的操作電腦了。而且這個類庫是跨平台的,Windows、Linux、macOS都可以用,是不是很吸引人呢?
Github頁面
安裝和使用
安裝PyAutoGUI非常簡單,從pip安裝即可。
pip install pyautogui
用pip安裝
這裡順便介紹一下PyAutoGUI的坐标系統,和一些常見的繪圖坐标系統相同,左上角為原點,向右是x軸正方向,向下是y軸正方向。假如你的螢幕是1920*1080,那麼右下角的坐标就是(1919, 1079),因為坐标是從0開始的,而不是從1開始的,這一點要格外注意。
PyAutoGUI雖然有很多函數,但是函數的作用基本上就是單擊/輕按兩下滑鼠、敲擊/按下/彈起按鍵這樣的,函數參數也就是點選間隔、點選按鍵這樣很簡單的參數。是以我就不列例子了,總之用起來非常簡單。
函數簡介
下面來介紹一下PyAutoGUI的函數。先來看看滑鼠操作函數,主要是點選、拖動、滑動滾輪這些操作。
滑鼠操作
鍵盤操作函數,主要就是按鍵、組合鍵操作。
鍵盤操作
提示框函數,可以用來顯示警告、确認、提示和密碼輸入對話框,增強程式可操作性。顯示對話框的時候,程式會暫停,直到使用者處理對話框。
提示框函數
截圖函數,可以從螢幕上截圖,也可以根據已有圖檔從螢幕上定位。主要用途是事先儲存一些按鈕圖檔,然後從螢幕上識别定位來點選按鈕。
截圖函數
操作執行個體
首先來看看官網的一個畫圖例子,我們需要打開一個畫圖程式的視窗,然後将它放到全屏。然後運作下面的代碼,然後切換到畫圖視窗。等待3秒鐘以後就可以看到PyAutoGUI開始畫圖了。
import pyautoguidistance = 100pyautogui.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)
結果如下。其實這個畫圖的代碼很簡單,就是一圈一圈縮小,然後調用drag函數拖住畫筆不放。
畫出來的圖
再來看一個圖檔識别的例子,這個例子需要先安裝OpenCV庫和opencv-python包。安裝之後就可以運作下面的例子了。這個例子儲存了windows 10計算機的幾個按鈕截圖,然後通過圖形識别的方式找到并點選按鈕執行操作。注意下面用到了confidence參數,即使圖檔沒有完全比對也可以識别到。
import pyautoguiimport timetime.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
通過PyAutoGUI,你可以輕松的對圖形界面進行自動化程式設計,按照螢幕位置或者圖檔識别來定位控件的位置,然後通過程式設計來控制滑鼠和鍵盤輸入。這和按鍵精靈的道理是一樣的。但是Python可以利用廣泛的第三方包來實作更多的功能,這一點是按鍵精靈無法相比的。