PyAutoGUI圖形用戶界面自動(dòng)化的超詳細(xì)教程
開始之前
在開始之前,要先安裝所需要的模塊 pyautogui, pyautogui 模塊可以向 Windows 發(fā)送虛擬按鍵和鼠標(biāo)點(diǎn)擊。
pip install -i https://pypi.douban.com/simple pyautogui
查看屏幕大小
pyautogui.size()
可以獲得屏幕的寬和高的像素?cái)?shù)(整數(shù))。
>>> pyautogui.size() Size(width=1920, height=1080) # 也可以直接將寬,高進(jìn)行保存 x, y = pyautogui.size()
獲取當(dāng)前鼠標(biāo)的位置
函數(shù)返回當(dāng)前位置 X,Y 坐標(biāo)的元組,如果設(shè)置 x,y 的參數(shù),則會(huì)覆蓋返回結(jié)果。
>>> pyautogui.position(x=None, y=None) Point(x=1437, y=817)
檢查指定坐標(biāo)是否在屏幕上
要檢查 X,Y 坐標(biāo)是否在屏幕上,將它們(支持兩個(gè)整數(shù),列表,元組)傳遞給 onScreen()
函數(shù),如果它們?cè)谄聊坏倪吔鐑?nèi),則返回 True ,否則返回 False 。
>>> pyautogui.size() (1920, 1080) >>> pyautogui.onScreen(1920, 1080) False >>> pyautogui.onScreen(1919, 1079) True
設(shè)置暫停時(shí)間
使用 pyautogui.PAUSE
變量設(shè)置要暫 停的秒數(shù)。如,在設(shè)置 pyautogui.PAUSE = 1
之后,每個(gè) PyAutoGUI 函數(shù)調(diào)用 在執(zhí)行動(dòng)作之后,都會(huì)等待一秒。
>>> pyautogui.PAUSE = 1
鼠標(biāo)功能
移動(dòng)鼠標(biāo)
移動(dòng)鼠標(biāo)到指定位置。
pyautogui.moveTo(x=None, y=None, duration=0.0) # 移動(dòng)鼠標(biāo)到指定位置
pyautogui.move(xOffset=None, yOffset=None, duration=0.0) # 在PyAutoGUI 1.0,move 替換了 moveRel,但moveRel也可以使用
pyautogui.moveTo(200, 300, duration=0.5) # 移動(dòng)到坐標(biāo)(200,300) pyautogui.move(200, 300, duration=0.5) # 從當(dāng)前鼠標(biāo)位置向右移動(dòng) 200 向下移動(dòng) 300
主要參數(shù)參數(shù):
x/xOffset:X軸坐標(biāo),moveTo()
中取值0或正整數(shù)值,move()/moveRel()
中取值可以為負(fù)數(shù),代表以當(dāng)前位置向左移動(dòng)
y/yOffset:Y軸坐標(biāo),moveTo()
中取值0或正整數(shù)值,move()/moveRel()
中取值可以為負(fù)數(shù),代表以當(dāng)前位置向上移動(dòng)
duration:移動(dòng)到指定坐標(biāo)花費(fèi)的時(shí)間,默認(rèn)為0,代表立即完成,單位為s
鼠標(biāo)點(diǎn)擊
使用 click()
完成鼠標(biāo)點(diǎn)擊操作。
>>> pyautogui.click(x=None, y=None, clicks=1, interval=0.0, button=PRIMARY, duration=0.0)
主要參數(shù):
x:X軸坐標(biāo),默認(rèn)為 None,即當(dāng)前X軸坐標(biāo)
y:Y軸坐標(biāo),默認(rèn)為 None,即當(dāng)前Y軸坐標(biāo)(注:X,Y 軸的坐標(biāo)只能同時(shí)指定,不能只指定某一個(gè))
clicks:鼠標(biāo)的點(diǎn)擊次數(shù),默認(rèn)為 1 次
interval:int 或浮點(diǎn)數(shù),表示每次單擊之間需要等待多少秒,默認(rèn)值為0.0,表示單擊之間沒有暫停
button:可選 LEFT、MIDDLE、RIGHT、PRIMARY(左鍵)或 SECONDARY(右鍵)。它的默認(rèn)值是 PRIMARY
duration:如果指定了 X,Y 的值,并且該坐標(biāo)不是鼠標(biāo)當(dāng)前位置的話,那么 duration 參數(shù)就可以生效,它表示移動(dòng)到指定坐標(biāo)花費(fèi)的時(shí)間,默認(rèn)為 0,表示立即移動(dòng)。
?? 其他點(diǎn)擊操作:
pyautogui.mouseDown() # 按下鼠標(biāo)按鍵(左鍵) pyautogui.mouseUp() # 釋放鼠標(biāo)按鍵(左鍵)
鼠標(biāo)拖動(dòng)
按住鼠標(biāo)的某個(gè)鍵進(jìn)行拖動(dòng)。
pyautogui.dragTo(x=None, y=None, duration=0.0, button=PRIMARY) # 將鼠標(biāo)拖動(dòng)到指定位置 pyautogui.drag(xOffset=0, yOffset=0, duration=0.0, button=PRIMARY) # 將鼠標(biāo)拖動(dòng)到屏幕上相對(duì)于當(dāng)前位置的一個(gè)點(diǎn)。
主要參數(shù):
x,y/xOffset,yOffset:x 和 y 指明鼠標(biāo)事件發(fā)生的位置。如果為 None,則使用鼠標(biāo)當(dāng)前位置。如果是浮點(diǎn)值,則將其舍入。如果在屏幕邊界之外,則事件發(fā)生在屏幕邊緣。
duration:如果指定了 X,Y 的值,并且該坐標(biāo)不是鼠標(biāo)當(dāng)前位置的話,那么 duration 參數(shù)就可以生效,它表示移動(dòng)到指定坐標(biāo)花費(fèi)的時(shí)間,默認(rèn)為 0,表示立即移動(dòng)。
button:可選 LEFT、MIDDLE、RIGHT、PRIMARY(左鍵)或 SECONDARY(右鍵)。它的默認(rèn)值是 PRIMARY
??示例:
鼠標(biāo)滾動(dòng)
垂直滾動(dòng),在不同平臺(tái)滾動(dòng)的效果可能不一樣。
>>> pyautogui.scroll(100) # 向上滾動(dòng)100 >>> pyautogui.scroll(-100) # 向下滾動(dòng)100 >>> pyautogui.scroll(100, x=200, y=200) # 移動(dòng)到200, 然后執(zhí)行滾動(dòng)
水平滾動(dòng),(適用與 OS X 和 Linux 平臺(tái)上)。
>>> pyautogui.hscroll(100) # 向右滾動(dòng)100 >>> pyautogui.hscroll(-100) # 向左滾動(dòng)100
??示例:
屏幕功能
截屏功能
使用 screenshot()
函數(shù)來實(shí)現(xiàn)截屏功能。調(diào)用 screenshot()
將返回一個(gè) Image 對(duì)象。傳入一個(gè)文件名字符串將把截圖保存到文件中,并將其作為一個(gè) Image 對(duì)象返回。通過 region 關(guān)鍵字參數(shù)來捕獲指定區(qū)域,只需傳遞一個(gè)由 left, top, width, height 組成的元組(left,top為左上角坐標(biāo))。
>>> import pyautogui >>> pyautogui.screenshot() >>> pyautogui.screenshot(r'C:\Users\pc\Desktop\test.png') >>> pyautogui.screenshot(r'C:\Users\pc\Desktop\test.png', region=(300, 300, 500, 1000))
定位功能
如果不知道要點(diǎn)擊的內(nèi)容在屏幕上的確切坐標(biāo),就不能調(diào)用 moveTo()
和 click()
函數(shù)。但是,如果有按鈕的圖像,如下面這個(gè)圖片,那就可以調(diào)用 locateOnScreen('圖片路徑')
函數(shù)來獲取坐標(biāo)。返回值是一個(gè)元組:(left, top, width, height)。這個(gè)元組可以傳遞給 center()
來獲得該區(qū)域中心的坐標(biāo)(X,Y)。如果在屏幕上找不到圖像,locateOnScreen()
將引發(fā) ImageNotFoundException 異常。
>>> location = pyautogui.locateOnScreen('圖片路徑') >>> pyautogui.center(location)
還可以將 grayscale=True
傳遞給 locateOnScreen,以略微加速(大約 30%)。這降低了圖像和截圖的顏色飽和度,加快了定位速度,但可能會(huì)導(dǎo)致錯(cuò)誤匹配。
消息框功能
PyAutoGUI 利用 PyMsgBox 中的消息框函數(shù)提供了一種跨平臺(tái)的純 Python 方法來顯示 javascript 樣式的消息框。
alert()函數(shù)
>>> pyautogui.alert(text='text', title='title', button='alert!') 'alert!'
顯示一個(gè)帶有文本的簡(jiǎn)單消息框和一個(gè) alert! 按鈕。單擊按鈕后返回 button 的值。
??示例:
confirm()函數(shù)
顯示帶有多個(gè)按鈕的消息框。按鈕的數(shù)量和文字可以自己設(shè)置。單擊按鈕返回該按鈕的文本。
>>> pyautogui.confirm(text='text', title='title', buttons=['再考慮一下', '卸載']) '卸載'
??示例:
prompt()函數(shù)
顯示一個(gè)包含 確認(rèn),取消 按鈕和文本輸入欄的消息框,用戶可以輸入指定內(nèi)容。當(dāng)點(diǎn)擊確認(rèn)按鈕后,返回輸入框中的值;若點(diǎn)擊取消,則返回 None 。
pyautogui.prompt(text='text', title='title', default='請(qǐng)輸入文本信息')
??示例:
password()函數(shù)
顯示一個(gè)包含 確認(rèn),取消 按鈕和文本輸入欄的消息框,輸入的字符顯示為"*"。如果點(diǎn)擊確認(rèn)則返回輸入的文本;如果單擊“取消”,則為 None
。
pyautogui.password(text='text', title='title', default='密碼', mask='*')
??示例:
鍵盤控制功能
write()函數(shù)
write()
函數(shù)將在傳入的字符串中鍵入字符。若要在按下每個(gè)字符鍵之間添加延遲間隔,interval 參數(shù)可以設(shè)置每個(gè)按鍵之間添加延遲。
>>> pyautogui.write('Hello world!', interval=0.25) # 每個(gè)字符間隔0.25秒
注意:pyautogui 并不支持輸入框自動(dòng)聚焦,所有輸入之前先要點(diǎn)擊輸入框位置。
press()函數(shù)
press()
函數(shù)執(zhí)行的操作相當(dāng)于鼠標(biāo)操作的 click()
,它接收傳遞給它的字符串。
press('num0', presses=1, interval=0.0)
- keys:傳入的鍵盤字符串
- presses:操作按鍵次數(shù),默認(rèn)一次
- interval:每次按鍵的間隔時(shí)間,默認(rèn)0
keys 所有取值如下:
['\t', '\n', '\r', ' ', '!', '"', '#', '$', '%', '&', "'", '(', ')', '*', '+', ',', '-', '.', '/', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', ';' , '<', '=', '>', '?', '@', '[', '\\', ']', '^', '_', '`', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't' , 'u', 'v', 'w', 'x', 'y', 'z', '{', '|', '}', '~', 'accept', 'add', 'alt', 'altleft', 'altright', 'apps', 'backspace', 'browserback', 'browserfavorites', 'browserforward', 'browserhome', 'browserrefresh', 'browsersearch','browserstop' ,'capslock', 'clear', 'convert', 'ctrl', 'ctrlleft','ctrlright', 'decimal', 'del', 'delete', 'divide', 'down', 'end', 'enter', 'esc', 'escape', 'execute', 'f1', 'f10', 'f11', 'f12', 'f13', 'f14', 'f15', 'f16', 'f17', 'f18', 'f19', 'f2' , 'f20', 'f21', 'f22', 'f23', 'f24', 'f3', 'f4', 'f5', 'f6', 'f7', 'f8', 'f9' , 'final', 'fn', 'hanguel', 'hangul','hanja', 'help', 'home', 'insert', 'junja' , 'kana', 'kanji', 'launchapp1', 'launchapp2', 'launchmail', 'launchmediaselect' , 'left', 'modechange', 'multiply', 'nexttrack', 'nonconvert' , 'num0', 'num1', 'num2', 'num3', 'num4', 'num5', 'num6', 'num7' , 'num8', 'num9', 'numlock', 'pagedown', 'pageup', 'pause', 'pgdn', 'pgup' , 'playpause', 'prevtrack', 'print', 'printscreen', 'prntscrn', 'prtsc' , 'prtscr', 'return', 'right', 'scrolllock', 'select', 'separator', 'shift' , 'shiftleft', 'shiftright', 'sleep', 'space', 'stop', 'subtract', 'tab', 'up' , 'volumedown', 'volumemute', 'volumeup', 'win', 'winleft', 'winright', 'yen' , 'command', 'option', 'optionleft', 'optionright']
hotkey()函數(shù)
接收多個(gè)字符串參數(shù),順序按下,再按相反的順序釋放。
pyautogui.hotkey('ctrl', 'shift', 'esc') 相當(dāng)于 pyautogui.keyDown('ctrl') # 按下 ctrl pyautogui.keyDown('shift') # 按下 shift pyautogui.keyDown('esc') # 按下 esc pyautogui.keyUp('esc') # 釋放 ctrl pyautogui.keyUp('shift') # 釋放 shift pyautogui.keyUp('ctrl') # 釋放 esc
??示例:
總結(jié)
到此這篇關(guān)于PyAutoGUI圖形用戶界面自動(dòng)化的文章就介紹到這了,更多相關(guān)PyAutoGUI圖形用戶界面自動(dòng)化內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python PyAutoGUI模塊控制鼠標(biāo)和鍵盤實(shí)現(xiàn)自動(dòng)化任務(wù)詳解
- Python使用pyautogui模塊實(shí)現(xiàn)自動(dòng)化鼠標(biāo)和鍵盤操作示例
- Python鍵鼠操作自動(dòng)化庫PyAutoGUI簡(jiǎn)介(小結(jié))
- Python pyautogui模塊實(shí)現(xiàn)鼠標(biāo)鍵盤自動(dòng)化方法詳解
- python PyAUtoGUI庫實(shí)現(xiàn)自動(dòng)化控制鼠標(biāo)鍵盤
- pyautogui自動(dòng)化控制鼠標(biāo)和鍵盤操作的步驟
- python 利用PyAutoGUI快速構(gòu)建自動(dòng)化操作腳本
- python教程之利用pyautogui圖形自動(dòng)化擊敗重復(fù)性辦公任務(wù)
相關(guān)文章
Flask框架URL管理操作示例【基于@app.route】
這篇文章主要介紹了Flask框架URL管理操作,結(jié)合實(shí)例形式分析了@app.route進(jìn)行URL控制的相關(guān)操作技巧,需要的朋友可以參考下2018-07-07一篇文章帶你搞懂Python類的相關(guān)知識(shí)
今天我們要說的是面向?qū)ο蟮暮诵?----類,類能幫我們把復(fù)雜的事情變得有條理,有順序,希望大家通過學(xué)習(xí)類能改善自己的編碼風(fēng)格,使代碼變得更為好看,更加通俗易懂,需要的朋友可以參考下2021-05-05詳解Python如何利用turtle繪制中國(guó)結(jié)
春節(jié)是中國(guó)特有的傳統(tǒng)節(jié)日,中國(guó)結(jié)是中華民族特有的純粹的文化精髓,富含豐富的文化底蘊(yùn)。本文將利用turtle繪制一個(gè)中國(guó)結(jié),需要的可以參考一下2022-02-02Python學(xué)習(xí)之函數(shù)的定義與使用詳解
函數(shù)是具有某種特定功能的代碼塊,可以重復(fù)使用(在前面數(shù)據(jù)類型相關(guān)章節(jié)。它使得我們的程序更加模塊化,不需要編寫大量重復(fù)的代碼。本文將詳細(xì)介紹Python中函數(shù)的定義與使用,感興趣的可以學(xué)習(xí)一下2022-03-03python函數(shù)和python匿名函數(shù)lambda詳解
這篇文章主要介紹了python函數(shù)和python匿名函數(shù)lambda,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-09-09Python3.x+迅雷x 自動(dòng)下載高分電影的實(shí)現(xiàn)方法
這篇文章主要介紹了Python3.x+迅雷x 自動(dòng)下載高分電影的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01