PyAutoGUIとは
PyAutoGUIは画面上でのマウス操作を自動化することのできるライブラリです。
非常にシンプルに記述することができるので様々な使い方ができそうです。
PyAutoGUIのインストール
PyAutoGUIを使用するにはpipでインストールする必要があります。
pip install pyautogui
インストール出来たらインポートします。今回はpguiで呼び出せるようにしました。
import pyautogui as pgui
基本操作
マウス操作
クリック
マウスの左クリックはpyautogui.click()で行います。
| 関数 | 説明 | 
|---|---|
| pyautogui.click() | 現在のマウスカーソル位置をクリック | 
| pyautogui.click(x, y) | モニター上の座標(x, y)の位置をクリック | 
| pyautogui.click('gazou.png') | クリックしたいボタンの画像を指定してそこをクリック | 
pyautogui.click(x, y)
モニター上の座標(x, y)の位置をクリックします。
この座標(x,y)とは何かというと、例えば、あなたのモニターの解像度が1920 x 1080なら左上が(0,0)、右下が(1919, 1079) です。
0,0       X increases -->
+---------------------------+
|                           | Y increases
|                           |     |
|   1920 x 1080 screen      |     |
|                           |     V
|                           |
|                           |
+---------------------------+ 1919, 1079
(PyAutoGui公式ドキュメントから転載 <https://pyautogui.readthedocs.io/en/latest/mouse.html>)
pyautogui.click('gazou.png')
クリックしたいボタンの画像('gazou.png')を指定することで任意の位置をクリックできるようになります。
今回はWindowsの「ペイント」で緑をクリックしたいとします。
この場合、緑の部分を画像として切り出しておきます('green.png')。
# 緑の部分をクリック
pyautogui.click('green.png')
この方法は便利ですが、場合によっては画像の場所を認識できないこともあるので注意が必要です。
様々なクリック方法
| クリックの種類 | 関数 | 
|---|---|
| 左クリック | pyautogui.click() | 
| 右クリック | pyautogui.rightClick() | 
| ダブルクリック | pyautogui.doubleClick() | 
| ホイールクリック | pyautogui.middleClick() | 
上記の関数に従えば左クリック以外も行うことができます。
マウスカーソルの移動
マウスカーソルの移動は絶対位置と相対位置の2種類があります。
| 関数 | 説明 | 
|---|---|
| pyautogui.moveTo(x,y) | モニター上の座標(x,y)を指定して、そこに移動 | 
| pyautogui.move(x,y) | 現在位置から横にx,縦にyだけ移動する | 
pyautogui.moveTo(x,y)
モニター上の座標(x,y)を指定して、そこに移動します。現在位置がどこかは関係ありません。
moveTo()の第3引数として移動にかける時間を指定することもできます。
時間指定がないと一瞬で移動しますが、この時間指定によりゆっくり移動させることができます。
# (100,100)の位置に移動
pyautogui.moveTo(100,100)
# (100,100)の位置に2秒かけて移動
pyautogui.moveTo(100,100,2)
pyautogui.move(x,y)
現在のマウスカーソルの位置から横にx,縦にyだけ移動します。
move()も移動にかける時間を指定できます。
# 現在位置から(100,100)だけ移動
pyautogui.move(100,100)
# 現在位置から(100,100)だけ2秒かけて移動
pyautogui.move(100,100,2)
ドラッグ
ドラッグも移動先の絶対位置か相対位置かの違いで2種類あります。
ドラッグも第3引数にドラッグにかける時間を指定することができます。
| 関数 | 説明 | 
|---|---|
| pyautogui.dragTo(x,y) | 現在位置からモニター上の座標(x,y)までドラッグ | 
| pyautogui.drag(x,y) | 現在位置から横にx,縦にyだけドラッグ | 
# 現在位置から(100,100)の位置まで5秒かけてドラッグ
pyautogui.dragTo(100,100,5)
キーボード操作
文字入力(英語)
キーボードから文字入力するにはpyautogui.write()を使います。
実際には、一度文字入力したいテキストボックスなどをクリックして、
文字カーソルをアクティブにしてからpyautogui.write()を実行することになると思います。
pyautogui.write('Hello world!')
文字入力(日本語)
日本語入力する場合は、一度入力したい文字列をクリップボードにコピーして貼り付けてから行います。
クリップボードを操作するにはpyperclipを使います。
pyperclipの詳しい使い方は下記を参照しました。
import pyperclip
# 入力した文字列をクリップボードにコピー
pyperclip.copy('こんにちは、世界!')
# Ctrl+vで貼り付け
pyautogui.hotkey('ctrl', 'v')
キー入力
文字を入力するのではなく、単にキーを押したい場合はpyautogui.press()を使います。
#「Enterキー」を押す
pyautogui.press('enter')
#「左カーソルキー」を4回押す
pyautogui.press(['left', 'left', 'left', 'left'])
「Ctrl+C(貼り付け)」や「Ctrl+Z(元に戻す)」などのホットキーについてはpyautogui.hotkey()で指定します。
# 「Ctrl+C(コピー)」
pyautogui.hotkey('ctrl', 'c')
# 「Ctrl+Z(元に戻す)」
pyautogui.hotkey('ctrl', 'z')
作成したプログラム
では最後にここまでの知識を使って、Windowsのペイントでお絵かきをしてみましょう。
今回は繰り返しで渦巻きを描いた後コメントを入れてみます。
import pyautogui as pgui
import pyperclip as pyclip
pgui.moveTo(400,300,duration=2)
pgui.click(400,300)
## 新規ページに更新
pgui.hotkey("ctrl","n")
pgui.press("n")
mt=0.1
distance=400
pgui.click("green.png")
pgui.moveTo(300,300,duration=0.5)
# 渦巻きの描画
while distance>0:
    pgui.dragRel(distance,0,duration=mt)
    distance-=20
    pgui.dragRel(0,distance,duration=mt)
    pgui.dragRel(-distance,0,duration=mt)
    distance-=20
    pgui.dragRel(0,-distance,duration=mt)
# テキストボックスを選択
pgui.click("text.png")
pgui.click(400,750)
pyclip.copy('蚊取り線香みたいだ!')# 日本語は一旦クリップボードにコピー
pgui.hotkey('ctrl', 'v')# 貼り付け
うまくいきました。もっと工夫すれば面白いものが作れそうですね。


