PyAutoGUIとは
プログラムで画面のカーソルを動かしたりクリックしたりキーボード入力したりして、
操作を自動化を行えるライブラリ。
プログラム自体は簡単でインパクト大なので教育現場で「プログラムができること」として披露するのもよさそう。
※プログラムが完成しないうちは画面上の間違ったところをクリックしたりして大変なことになるので、誤操作されても問題ない状態にして動かすこと。
インストール
pip install pyautogui
キーボード操作
キーを押す
pyautogui.press('enter')
キーダウン
※押しっぱなしになるのでキーアップとセットで使うこと
pyautogui.keyDown('shift')
キーアップ
pyautogui.keyUp('shift')
ショートカットキーなどの同時入力
pyautogui.hotkey('ctrl', 'c')
テキスト入力
pyautogui.write('I gained freedom.')
注意:
USキーボードを想定されて作られているようで、以下の文字を入力すると他の文字が入力される。
-
^
→~
-
@
→`
-
:
→*
※このページを参考にすると解決できるがライブラリ自体を変更するので自己責任で。
マウス
カーソル移動
pyautogui.moveTo(x, y)
クリック
pyautogui.click() # 左クリック
pyautogui.click(button='right') # 右クリック
画像認識でカーソル移動してクリック
カーソル移動したい部分を画像ファイルとして事前に保存しておくこと
保存したファイルと同一の部分を探してクリック
localtion=pyautogui.locateCenterOnScreen('heart.png') # 見つからない場合Noneが変える
if localtion is not None:
pyautogui.moveTo(localtion) # 見つかった場合はlocationにX,Y座標が入る
pyautogui.click()
※画像認識は数秒ほど時間がかかったり、1回で認識してくれなかったりする。
→1回で認識できる確率が低いときは、2回チェックさせることで対象箇所を探す確率が向上した。
操作スピードを上げるなら、上記の座標でのカーソル移動の方が格段に速いので画像認識処理は減らした方がいい。
スクリーンショット
img = pyautogui.screenshot(region=(225, 225, 650, 450))
img.save('screenshot.png')
※範囲指定を省略すると全画面のスクリーンショットとなる。
おまけ
ブラウザなど画面の表示までに時間がかかる場合などはスリープ処理を入れるとよい。
from time import sleep
sleep(1) # 指定時間は秒単位
参考
- PyAutoGUI公式ドキュメント
- PyAutoGuiで繰り返し作業をPythonにやらせよう
- PyAutoGUIを使った自動化 -入門編- 〜D&Dやスクロールなどのマウス操作も簡単に〜
- teratail - pyautoguiを用いて「:」の入力をしたいです。
その他
「:」入力対応する場合のpyautoguiライブラリの場所(Windows)
C:\Users\ユーザ\AppData\Local\Programs\Python\Python38\Lib\site-packages\pyautogui