10
22

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

PyAutoGUI チートシート(画面操作の自動化)

Last updated at Posted at 2021-07-10

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') # 右クリック

画像認識でカーソル移動してクリック

カーソル移動したい部分を画像ファイルとして事前に保存しておくこと

image.png

保存したファイルと同一の部分を探してクリック

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ライブラリの場所(Windows)

C:\Users\ユーザ\AppData\Local\Programs\Python\Python38\Lib\site-packages\pyautogui
10
22
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
22

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?