Python pyautogui 模塊-實現鼠標鍵盤自動化

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

1

2

3

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

pip install p_w_picpath

pip install pyautogui

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


使用 pyautogui 模塊控制鼠標的移動

  • size(): 用於獲取屏幕分辨率

1

2

3

import pyautogui

 

print(pyautogui.size())


  • moveTo(): 用於鼠標的移動

1

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

這段代碼調用了 moveTo() 函數, 其接受 x, y 座標作爲參數, 還有一個可選的持續時間參數. 該函數將鼠標指針從當前位置移動到 (x, y) 座標指定的位置, 移動花費的時間由持續時間參數指定. 保存並運行該 Python 腳本, 你將看到, 鼠標指針像被施了魔法一樣, 從當前位置花 1 秒鐘時間移動到座標位置 (100, 100).


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

1

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

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


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

1

print(pyautogui.position())

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


  • click(): 用於控制鼠標點擊和拖拽

1

pyautogui.click(370,120)

在(370,120)的位置模擬鼠標點擊,其中click還有一個參數動作button,默認爲'lest',當button='right'時,可rightClick()效果一樣(鼠標右鍵點擊)


  • doubleClick() 雙擊

  • rightClick() 右擊

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

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

1

2

3

4

5

6

7

8

9

10

11

import pyautogui

import time

 

time.sleep(5# 5秒種時間切換到畫板程序

 

pyautogui.moveTo(200,200,duration=1# 鼠標移動到(200,200)的位置

 

pyautogui.dragRel(100,0,duration=1)

pyautogui.dragRel(0,100,duration=1)

pyautogui.dragRel(-100,0,duration=1)

pyautogui.dragRel(0,-100,duration=1)


  • scroll(): 滾屏函數接受像素數作爲參數, 並用給定的像素數向上滾屏

1

pyautogui.scroll(200)

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


  • typewrite(): 用於自動鍵入字符串, 只需將要鍵入的字符串傳遞給函數作爲參數即可

1

2

pyautogui.click(100,200)

pyautogui.typewrite('hello word!')

假設文本區域位於屏幕 (100, 200) 的座標位置, 那麼這段代碼將點擊文本區域, 激活它, 並鍵入'hello word!'


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

1

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

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


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

1

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

模擬ctrl-v,複製功能

1

2

3

4

5

6

7

8

pyautogui.hotkey('ctrl''shift''esc')

等價於

pyautogui.keyDown('ctrl')

pyautogui.keyDown('shift')

pyautogui.keyDown('esc')

pyautogui.keyUp('esc')

pyautogui.keyUp('shift')

pyautogui.keyUp('ctrl')


  • press() :鍵盤功能按鍵

1

2

3

pyautogui.press('enter')  # press the Enter key

pyautogui.press('f1')     # press the F1 key

pyautogui.press('left')   # press the left arrow key


  • 消息彈窗函數

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

1

2

3

pyautogui.alert('這個消息彈窗是文字+OK按鈕')  # 返回OK 

pyautogui.confirm('這個消息彈窗是文字+OK+Cancel按鈕'# 返回OK 或 Cancel

pyautogui.prompt('這個消息彈窗是讓用戶輸入字符串,單擊OK'# 返回輸入的字符串


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章