PyAutoGUI 讓你的 Python 腳本控制滑鼠和鍵盤,以自動化與其他應用程式的互動。API 設計得很簡單。PyAutoGUI 可以在 Windows、macOS 和 Linux 上運行,並且支持 Python 2 和 3。
要使用 pip 安裝,請運行 pip install pyautogui
。詳情請參見 安裝 頁面。
PyAutoGUI 具有幾個功能:
- 移動滑鼠並在其他應用程式的視窗中點擊。
- 向應用程式發送按鍵(例如,填寫表單)。
- 擷取螢幕截圖,並給定一個圖像(例如,按鈕或核取方塊),在螢幕上找到它。
- 定位應用程式的視窗,並移動、調整大小、最大化、最小化或關閉它(目前僅限於 Windows)。
- 顯示警示和消息框。
這裡有 一個自動玩遊戲 Sushi Go Round 的機器人 YouTube 影片。這個機器人觀察遊戲的應用程式視窗,並搜尋壽司訂單的圖片。當它找到一個時,它會點擊食材按鈕來製作壽司。它還會在遊戲中點擊電話以根據需要訂購更多食材。這個機器人是完全自主的,能夠完成遊戲的所有七天。這就是 PyAutoGUI 能夠實現的自動化類型。
import pyautogui screenWidth, screenHeight = pyautogui.size() # 獲取主顯示器的大小。 screenWidth, screenHeight (2560, 1440) currentMouseX, currentMouseY = pyautogui.position() # 獲取滑鼠的XY位置。 currentMouseX, currentMouseY (1314, 345) pyautogui.moveTo(100, 150) # 將滑鼠移動到XY座標。 pyautogui.click() # 點擊滑鼠。 pyautogui.click(100, 200) # 將滑鼠移動到XY座標並點擊它。 pyautogui.click('button.png') # 找到button.png在螢幕上出現的位置並點擊它。 pyautogui.move(400, 0) # 將滑鼠向右移動400像素。 pyautogui.doubleClick() # 雙擊滑鼠。 pyautogui.moveTo(500, 500, duration=2, tween=pyautogui.easeInOutQuad) # 使用緩動函數在2秒內移動滑鼠。 pyautogui.write('Hello world!', interval=0.25) # 每個鍵之間暫停四分之一秒 pyautogui.press('esc') # 按下Esc鍵。所有鍵名都在pyautogui.KEY_NAMES with pyautogui.hold('shift'): # 按下Shift鍵並保持。 pyautogui.press(['left', 'left', 'left', 'left']) # 按下左箭頭鍵4次。
Shift鍵會自動釋放。
pyautogui.hotkey('ctrl', 'c') # 按下Ctrl-C熱鍵組合。 pyautogui.alert('This is the message to display.') # 顯示一個警告框並暫停程序直到點擊確定。
這個例子在 MS Paint(或任何圖形繪圖程序)中以方形螺旋形狀拖動滑鼠:
距離 = 200 當 距離 > 0: pyautogui.drag(距離, 0, duration=0.5) # 向右移動 距離 -= 5 pyautogui.drag(0, 距離, duration=0.5) # 向下移動 pyautogui.drag(-距離, 0, duration=0.5) # 向左移動 距離 -= 5 pyautogui.drag(0, -距離, duration=0.5) # 向上移動
使用 PyAutoGUI 的好處,相較於直接生成圖像文件的腳本,是您可以使用 MS Paint 提供的畫筆工具。
Send questions to 阿爾@inventwithpython.com
Q: PyAutoGUI 可以在 Android、iOS 或平板/智能手機應用程式上運作嗎。
A: 不幸的是不行。PyAutoGUI 只在 Windows、macOS 和 Linux 上運行。
Q: PyAutoGUI 是否支持多顯示器設置。
A: 不,目前 PyAutoGUI 只處理主要顯示器。
Q: PyAutoGUI 有做 OCR 嗎?
A: 不,但這是一個在計劃中的功能。
Q: PyAutoGUI 可以進行鍵盤記錄,或檢測某個鍵是否當前被按下嗎?
A: 不,PyAutoGUI 目前無法做到這一點。
就像《魔法師的學徒》中被施了魔法的掃帚一樣,這些掃帚被編程為不斷地填充(然後過度填充)浴缸的水,你的程式中的一個錯誤可能會使它失控。如果滑鼠游標自己在移動,那麼用滑鼠關閉一個程式就變得很困難。
作為一項安全功能,故障安全功能預設為啟用。當調用 PyAutoGUI 函數時,如果滑鼠位於主顯示器的四個角落中的任何一個,則會引發 pyautogui.FailSafeException
。在調用每個 PyAutoGUI 函數後會有十分之一秒的延遲,以便用戶有時間將滑鼠猛擊到角落以觸發故障安全。
您可以通過設置 pyautogui.FAILSAFE = False
來禁用此安全保護。我強烈建議您不要禁用安全保護。
第十秒的延遲是由 pyautogui.PAUSE
設定設置的,默認為 0.1
。您可以更改此值。還有一個 pyautogui.DARWIN_CATCH_UP_TIME
設定,這在 macOS 上的鍵盤和滑鼠事件後添加額外的延遲,因為操作系統似乎在 PyAutoGUI 發出這些事件後需要一個延遲。默認設置為 0.01
,增加了額外的百分之一秒延遲。
內容:
這份文件仍在進行中。
© 版權所有 2019, Al Sweigart 修訂 24d638dc
.
使用 Sphinx 建置,並採用 Read the Docs 提供的 主題。