1. 程式人生 > 程式設計 >Python pyautogui模組實現滑鼠鍵盤自動化方法詳解

Python pyautogui模組實現滑鼠鍵盤自動化方法詳解

本文簡單介紹如何使用 Python 的 pyautogui 模組實現滑鼠的自動移動以及鍵盤的自行輸入. 該模組不是 Python 自帶的,因此執行以下命令進行安裝

# pyautogui模組依賴image模組,沒有image會報ImportError: No module named 'PIL'錯誤

pip install image

pip install pyautogui

官方文件介紹:https://pyautogui.readthedocs.io/en/latest/

使用 pyautogui 模組控制滑鼠的移動

size(): 用於獲取螢幕解析度

import pyautogui
 
print(pyautogui.size())

moveTo(): 用於滑鼠的移動

pyautogui.moveTo(100,100,duration=1)

這段程式碼呼叫了 moveTo() 函式,其接受 x,y 座標作為引數,還有一個可選的持續時間引數. 該函式將滑鼠指標從當前位置移動到 (x,y) 座標指定的位置,移動花費的時間由持續時間引數指定. 儲存並執行該 Python 指令碼,你將看到,滑鼠指標像被施了魔法一樣,從當前位置花 1 秒鐘時間移動到座標位置 (100,100).

moveRel(): 根據當前位置,相對移動滑鼠指標

pyautogui.moveRel(0,300,duration=1)

這段程式碼將滑鼠指標從原位置相對地移動 (0,300) 個畫素點 (譯註: 即向下移動 300 畫素). 比如說,執行程式碼之前,滑鼠指標在 (1000,300),那麼程式碼執行之後,滑鼠指標將移動到 (1000,600),耗時 1 秒.

position(): 獲取當前滑鼠指標的位置

print(pyautogui.position())

輸出: 程式執行時的滑鼠所在的位置座標.

click(): 用於控制滑鼠點選和拖拽

pyautogui.click(370,120)

在(370,120)的位置模擬滑鼠點選,其中click還有一個引數動作button,預設為'lest',當button='right'時,可rightClick()效果一樣(滑鼠右鍵點選)

doubleClick() 雙擊

rightClick() 右擊

有兩個與滑鼠拖拽操作相關的函式: dragTo 和 dragRel. 它們的行為與 moveTo 和 moveRel 類似,區別在於拖拽操作在移動的過程中,會保持滑鼠左鍵被按下.

該功能可用於不同的場景,比如移動對話方塊,或在 Windows 的畫板程式中用鉛筆工具自動繪圖

import pyautogui
import time
 
time.sleep(5) # 5秒種時間切換到畫板程式
 
pyautogui.moveTo(200,200,duration=1) # 滑鼠移動到(200,200)的位置
 
pyautogui.dragRel(100,duration=1)
pyautogui.dragRel(0,duration=1)
pyautogui.dragRel(-100,-100,duration=1)

scroll(): 滾屏函式接受畫素數作為引數,並用給定的畫素數向上滾屏

pyautogui.scroll(200)

對選中的視窗進行向上滾屏200個畫素點.當值為負數時,向下移動

typewrite(): 用於自動鍵入字串,只需將要鍵入的字串傳遞給函式作為引數即可

pyautogui.click(100,200)
pyautogui.typewrite('hello word!')

假設文字區域位於螢幕 (100,200) 的座標位置,那麼這段程式碼將點選文字區域,啟用它,並鍵入'hello word!'

傳遞鍵名: 可以向 typywrite() 函式傳入分離的鍵名.

pyautogui.typewrite(['a','left','ctrlleft'])

這段程式碼等價於: 鍵入 "a",然後敲擊左方向鍵,再敲擊左 ctrl 鍵.

熱鍵組合: hotkey() 可以模擬組合熱鍵,比如: ctrl-c,ctrl-a,ctrl-v 等

pyautogui.hotkey('ctrlleft','v')

模擬ctrl-v,複製功能

pyautogui.hotkey('ctrl','shift','esc')
#等價於
pyautogui.keyDown('ctrl')
pyautogui.keyDown('shift')
pyautogui.keyDown('esc')
pyautogui.keyUp('esc')
pyautogui.keyUp('shift')
pyautogui.keyUp('ctrl')

press() :鍵盤功能按鍵

pyautogui.press('enter') # press the Enter key
pyautogui.press('f1')   # press the F1 key
pyautogui.press('left')  # press the left arrow key

訊息彈窗函式

如果你需要訊息彈窗,通過單擊OK暫停程式,或者向用戶顯示一些資訊,訊息彈窗函式就會有類似JavaScript的功能:

pyautogui.alert('這個訊息彈窗是文字+OK按鈕') # 返回OK 
pyautogui.confirm('這個訊息彈窗是文字+OK+Cancel按鈕') # 返回OK 或 Cancel
pyautogui.prompt('這個訊息彈窗是讓使用者輸入字串,單擊OK') # 返回輸入的字串

更多關於Python pyautogui模組的使用方法請檢視下面的相關連結