本篇 ShengYu 將介紹如何用 Python 搭配 PyAutoGUI 模組來模擬鍵盤、模擬滑鼠,Python 如何模擬鍵盤按下按鍵與模擬滑鼠移動滑鼠與點擊,將在以下教學內容解釋。
以下 Python PyAutoGUI 將分為這幾部分介紹,
- Python PyAutoGUI 模擬鍵盤
- Python PyAutoGUI 模擬滑鼠
- Python PyAutoGUI 螢幕截圖
- 其他
- Python PyAutoGUI 常用 API 列表
那我們開始吧!
在執行 Python 如果遇到 ImportError: No module named ‘pyautogui’ 這錯誤訊息就是需要安裝 pyautogui,或參考這篇安裝吧!1
pip install pyautogui
Python PyAutoGUI 模擬鍵盤
這邊介紹 Python PyAutoGUI 模擬鍵盤的按鍵、組合鍵的範例,
用 PyAutoGUI 模擬按下按鍵的話,例如按下 a 鍵跟 enter 鍵,1
2
3
4import pyautogui
pyautogui.press('a') # 按 a
pyautogui.press('enter') # 按 enter
用 PyAutoGUI 模擬按下組合鍵的話,以複製貼上為例,1
2
3
4
5
6
7import pyautogui
pyautogui.hotkey('ctrl', 'c') # 複製
pyautogui.hotkey('ctrl', 'v') # 貼上
pyautogui.hotkey('command', 'c') # macOS 複製
pyautogui.hotkey('command', 'v') # macOS 貼上
用 PyAutoGUI 模擬輸入 hello world 的話,用 pyautogui.typewrite() 或者 pyautogui.write() 都可以,1
2
3
4
5
6
7import pyautogui
pyautogui.typewrite('hello world')
pyautogui.typewrite('hello world', interval=0.5) # 每個字的按鍵間隔 0.5 秒
pyautogui.write('hello world')
pyautogui.write('hello world', interval=0.5) # 每個字的按鍵間隔 0.5 秒
不是所有的鍵都很容易用單個文字字元來表示。例如 Shift 鍵或左箭頭鍵,PyAutoGUI 要組合輸入這些特殊鍵的話可以這樣寫,1
2
3import pyautogui
pyautogui.typewrite(['a', 'b', 'left', 'left', 'X', 'Y'])
常用的一些按鍵整理如下表:
用法 | 說明 |
---|---|
press(‘a’) | a |
press(‘enter’) | 回車鍵 |
press(‘esc’) | Esc |
press(‘space’) | space 空白鍵 |
press(‘backspace’) | 返回鍵 |
press(‘up’) | 上 |
press(‘down’) | 下 |
press(‘left’) | 左 |
press(‘right’) | 右 |
press(‘pgup’) | Page Up |
press(‘pgdn’) | Page Down |
press(‘playpause’) | 播放/暫停 |
press(‘volumeup’) | 大聲 |
press(‘volumedown’) | 小聲 |
press(‘volumemute’) | 靜音 |
press(‘printscreen’) | Print Screen |
press(‘ctrl’) | Ctrl |
press(‘shift’) | Shift |
press(‘alt’) | Alt |
press(‘option’) | Option |
更多按鍵資訊可參考
https://pyautogui.readthedocs.io/en/latest/keyboard.html
Python PyAutoGUI 模擬滑鼠
這邊介紹 Python PyAutoGUI 來模擬滑鼠的移動、拖曳、點擊。這邊需要解釋一下螢幕上的座標軸,這樣接下來才清楚滑鼠要往哪邊移動。
以下範例為 1920 x 1080 的螢幕解析度示意。
1 | (0, 0) X 增加 --> (1919, 0) |
取得螢幕解析度
1 | import pyautogui |
取得滑鼠當前的座標位置
1 | import pyautogui |
移動滑鼠到絕對位置
語法:moveTo(width, height, duration)
移動到(300, 200)絕對位置
1 | import pyautogui |
移動滑鼠到相對位置
語法:moeRel(width, height, duration)
移到相對位置,以當前滑鼠位置為基準點
1 | import pyautogui |
滑鼠拖曳
1 | import pyautogui |
滑鼠點擊
語法:click(width, height, button)
1 | import pyautogui |
更多滑鼠資訊可參考 https://pyautogui.readthedocs.io/en/latest/mouse.html
Python PyAutoGUI 螢幕截圖
這邊介紹 PyAutoGUI 螢幕快照截圖功能,除此之外,PyAutoGUI 還可以比對圖片找出圖片在螢幕的那個位置,在搭配滑鼠或鍵盤的模擬操作,進行一連串的自動化操作。
要將目前的螢幕畫面擷取下來,可以使用 PyAutoGUI 的 screenshot(),1
2
3
4import pyautogui
image1 = pyautogui.screenshot() # 擷取螢幕畫面
image2 = pyautogui.screenshot('screenshot.png') # 擷取螢幕畫面,同時儲存檔案
其他
暫停幾秒鐘
1 | import pyautogui |
Fail-Safes (預設false)
當滑鼠一道螢幕左上角時,觸發 pyautogui 的FailSafeException 異常
1 | import pyautogui |
詳情請看https://pyautogui.readthedocs.io/en/latest/introduction.html#fail-safes
Python PyAutoGUI 常用 API 列表
這邊列出 Python PyAutoGUI 常用 API 列表,方便快速查詢使用,
moveTo(x, y)
:將滑鼠移動到指定的 x、y 坐標。moveRel(xOffset, yOffset)
:相對於當前位置移動滑鼠。dragTo(x, y)
:按下左鍵並移動滑鼠。dragRel(xOffset, yOffset)
:按下左鍵,相對於當前位置移動滑鼠。click(x, y, button)
:模擬點擊(預設是左鍵)。rightClick()
:模擬右鍵點擊。doubleClick()
:模擬左鍵雙擊。middleClick()
:模擬中鍵點擊。mouseDown(x, y, button)
:模擬在 x、y 處按下指定滑鼠按鍵。mouseUp(x, y, button)
:模擬在 x、y 處釋放指定滑鼠按鍵。scroll(units)
:模擬滾動滾輪。正參數表示向上滾動,負參數表示向下滾動。typewrite(message)
:逐一輸入給定的字串。typewrite([key1, key2, key3])
:輸入給定鍵字串。press(key)
:按下並釋放給定鍵。keyDown(key)
:模擬按下給定鍵。keyUp(key)
:模擬釋放給定鍵。hotkey([key1, key2, key3])
:模擬按順序按下給定鍵字串,然後以相反的順序釋放。screenshot()
:回傳螢幕快照的 Image。screenshot('screenshot.png')
:螢幕快照並存檔且回傳螢幕快照的 Image。
另外 pyautogui 還有 Message Box 和 Screenshot 改天再研究吧!
對 Python 自動化有興趣可以參考《Python 自動化的樂趣》這本書中的自動化專題實作章節。
參考
PyAutoGUI : 使用Python控制電腦 - Yanwei Liu - Medium
https://medium.com/@yanweiliu/662cc3b18b80
Python学习笔记——用GUI自动化控制键盘和鼠标 - 简书
https://www.jianshu.com/p/41463c82ec8f
其它相關文章推薦
Python 安裝 PyAutoGUI 模組