PyAutoGui是一個跨平臺GUI自動化庫。
PyAutoGUI是一個Python模塊,用於以編程方式控制鼠標和鍵盤。
PyPutoGUI可以從pip工具安裝或從PyPI下載
https://pypi.python.org/pypi/PyAutoGUI
源代碼可在以下網址獲得:https://github.com/asweigart/pyautogui
------------------------------------------------------------------------
本文主要介紹截圖功能和圖像匹配
截圖功能
PyAutoGUI可以截取屏幕截圖,將其保存到文件中,並在屏幕中定位圖像。 如果您有一個小圖像,例如需要單擊並希望在屏幕上找到它,這個功能將非常有用。 這些功能由PyScreeze模塊提供,它與PyAutoGUI一起安裝。
屏幕截圖功能需要Pillow模塊。 OS X使用操作系統附帶的screencapture命令。 Linux使用scrot命令,可以通過運行sudo apt-get install scrot來安裝。
Special Notes About Ubuntu
關於Ubuntu的特別說明
不幸的是,Ubuntu似乎在安裝Pillow時存在一些不足之處。 Ubuntu上開箱即用的Pillow不包含PNG和JPEG支持。 以下鏈接提供了更多信息:https:// stackoverflow.com / questions / 7648200 / pip-install-pil-e-tickets-1-no-jpeg-png-support http://ubuntuforums.org/showthread.php?t= 1751455
The screenshot() Function
調用screenshot()將返回一個Image對象(有關詳細信息,請參閱Pillow或PIL模塊文檔)。 傳遞文件名字符串會將屏幕截圖保存到文件中,並將其作為Image對象返回。
在1920 x 1080的屏幕上,screenshot()函數大約需要100毫秒 - 它並不快,但速度並不慢 如果您不想要整個屏幕的屏幕截圖,還有一個可選的區域關鍵字參數。 您可以傳遞區域region左側,頂部,寬度和高度的四個整數元組來捕獲
The Locate Functions
定位功能
如果你有對應的圖像文件,可以在屏幕上直觀地找到它的位置。 例如,假設計算器應用程序正在您的計算機上運行,看起來像這樣:
如果你不知道確切計算器按鈕的屏幕座標,你不能調用moveTo()和click()函數點擊。 每次啟動計算器時,計算器都會顯示在略有不同的位置 每次重新找到座標。 但是,如果有按鈕的圖像,例如7按鈕的圖像:
你可以調用locateOnScreen('calc7key.png')函數來獲取屏幕座標。 返回值是一個4整數元組:(左,頂,寬,高)。 這個元組可以傳遞給center()以獲得X和Y.
座標在該區域的中心。 如果在屏幕上找不到圖像,則locateOnScreen()返回None
locateCenterOnScreen()函數可能是最常使用的函數:
在1920 x 1080屏幕上,定位功能調用大約需要1或2秒。這對於動作視頻遊戲來說可能太慢,但適用於大多數目的和應用程序。
有幾個“定位”功能。他們都開始查看屏幕左上角(或圖像)並向右看,然後向下看。參數可以是a
•locateOnScreen(image,grayscale = False) - 返回屏幕上第一個找到的圖像實例的(左,頂部,寬度,高度)座標。如果在屏幕上找不到,則返回None。
•locateCenterOnScreen(image,grayscale = False) - 返回屏幕上第一個找到的圖像實例中心的(x,y)座標。如果在屏幕上找不到,則返回None。
•locateAllOnScreen(image,grayscale = False) - 返回一個生成器(左,頂部,寬度,高度)元組,用於在屏幕上找到圖像的位置。
•locate(needleImage,haystackImage,grayscale = False) - 返回haystackImage中第一個找到的needleImage實例的(左,頂部,寬度,高度)座標。如果在屏幕上找不到,則返回None。
•locateAll(needleImage,haystackImage,grayscale = False) - 返回一個生成(left,top,width,height)元組的生成器,用於在haystackImage中找到needleImage的位置
“locate all”函數可以在for循環中使用或傳遞給list():
這些“定位”功能相當耗時, 他們可以花一整秒鐘來運行。 加速它們的最好方法是傳遞一個區域
Region參數(4個整數元組(左,上,寬,高)),只搜索屏幕的較小區域而不是全屏:
Grayscale Matching
灰度匹配
或者,您可以將灰度= True傳遞給locate函數,以提供輕微的加速(約30%-ish)。 這會使圖像和屏幕截圖中的顏色去飽和,從而加快定位速度,但可能導致誤判。
Pixel Matching
像素匹配
要獲取屏幕截圖中像素的RGB顏色,請使用Image對象的getpixel()方法:
或者作為單個函數,調用pixel()PyAutoGUI函數,它是以前調用的函數:
如果您只需要驗證單個像素是否與給定像素匹配,請調用pixelMatchesColor()函數,向其傳遞它代表的顏色的X座標,Y座標和RGB元組:
可選的tolerance關鍵字參數指定在匹配時每個紅色,綠色和藍色值可以變化的程度:
--------------------------------------------------------------------------------
請關注頭條pyhelloworld,瞭解更多精彩內容
閱讀更多 pyhelloworld 的文章