Pythonでマウス操作をする方法を試してみました!
マウス操作が自動化できるうえ、設定次第で移動モーションも見れるので結構楽しいですよ!
そして更に実用的!
インストール
pipでインストールできます。
コマンドは
pip install PyAutoGUI
こんな感じで出力されます。
出力内容を見るには、[表示]をクリック→
c:\>pip install PyAutoGUI Collecting PyAutoGUI Downloading PyAutoGUI-0.9.36.tar.gz (46kB) 100% |████████████████████████████████| 51kB 235kB/s Collecting pymsgbox (from PyAutoGUI) Downloading PyMsgBox-1.0.6.zip Collecting PyTweening>=1.0.1 (from PyAutoGUI) Downloading PyTweening-1.0.3.zip Requirement already satisfied: Pillow in c:\users\xxx\appdata\local\continuum\an aconda3\lib\site-packages (from PyAutoGUI) Collecting pyscreeze (from PyAutoGUI) Downloading PyScreeze-0.1.13.tar.gz Collecting olefile (from Pillow->PyAutoGUI) Downloading olefile-0.45.1.zip (112kB) 100% |████████████████████████████████| 112kB 1.7MB/s Building wheels for collected packages: PyAutoGUI, pymsgbox, PyTweening, pyscreeze, olefile Running setup.py bdist_wheel for PyAutoGUI ... done Stored in directory: C:\Users\xxx\AppData\Local\pip\Cache\wheels\9f\cb\d6\e1a8 e98f118b45631ce4e6b35f7a6a8781a850ca0e04404dde Running setup.py bdist_wheel for pymsgbox ... done Stored in directory: C:\Users\xxx\AppData\Local\pip\Cache\wheels\c1\cb\86\c3c2 e3c39f9f0d015cf0f94ab6ca41e14f8c2083846e82b91d Running setup.py bdist_wheel for PyTweening ... done Stored in directory: C:\Users\xxx\AppData\Local\pip\Cache\wheels\04\86\59\70a9 3cd378740b5266c51e11c36ee3fc8b9dfef4b3bc72fd82 Running setup.py bdist_wheel for pyscreeze ... done Stored in directory: C:\Users\xxx\AppData\Local\pip\Cache\wheels\83\6e\b7\972c 8bbecac72a1b6dbee849d36cf373f7e19e633151409537 Running setup.py bdist_wheel for olefile ... done Stored in directory: C:\Users\xxx\AppData\Local\pip\Cache\wheels\75\f2\18\9f07 3aab5b308aaccec50c17d4afb33dffc3265254e7962d67 Successfully built PyAutoGUI pymsgbox PyTweening pyscreeze olefile Installing collected packages: pymsgbox, PyTweening, pyscreeze, PyAutoGUI, olefile Successfully installed PyAutoGUI-0.9.36 PyTweening-1.0.3 olefile-0.45.1 pymsgbox-1.0.6 pyscreez e-0.1.13
主な関数
関数名 | 概要 |
---|---|
size() | 画面サイズを取得 Width,Heightがタプルで返ってくる |
position() | マウスの現在位置を取得 Width,Heightがタプルで返ってくる |
moveTo(x, y, duration=N) | マウスを絶対座標指定で動かす durationでカーソル移動速度を指定できる 0でノーモーション |
moveRel(x, y, duration=N) | マウスを相対座標指定で動かす durationでカーソル移動速度を指定できる 0でノーモーション |
click(x, y) | 絶対座標位置をクリックする |
dragRel(x, y, duration=N) | 相対座標位置までドラッグを行う durationでカーソル移動速度を指定できる 0でノーモーション |
scroll(M) | スクロールする 引数はスクロールする量 正数:上へ、負数:下へ |
duration 多少付けとくと見た目に分かりやすい あと勝手に動くさまを見てるのなんか自動化っぽくて楽しい
遊びやお試しの時は付けてみるといいかも
試してみる
「pyautogui」をインポートする。
毎度入力は面倒なので、pguiというエイリアスを付けました。
>>> import pyautogui as pgui
画面サイズの取得
タプルで返ってくるので、このようにすると縦横どちらも取得できます。
>>> # 画面サイズを取得 ... >>> width, height = pgui.size() >>> width 1920 >>> height 1080
マウスを動かす
これでマウスが動きます。
動くだけです。
durationは
(早)0 <---> 1.0(遅)
といった感じ。
0はノーモーションで瞬間移動状態になります。
>>> # 絶対座標で移動 ... >>> pgui.moveTo(100, 100, duration=0.25) >>> pgui.moveTo(100, 100, duration=0.0) >>> pgui.moveTo(100, 100, duration=1.0) >>> >>> for i in range(3): ... pgui.moveTo(100, 100, duration=0.25) ... pgui.moveTo(200, 100, duration=0.25) ... pgui.moveTo(200, 200, duration=0.25) ... pgui.moveTo(100, 200, duration=0.25) ... >>> >>> # 相対座標で移動 ... >>> pgui.moveRel(100, 0, duration=0.25) >>> pgui.moveRel(100, 0, duration=0.25) >>> pgui.moveRel(100, 0, duration=0.25)
現在位置を取得
これもタプルで取得できる。楽チンだね!
取得した値+相対座標での操作を行えば、おおざっぱな処理なら座標を知らなくてもだいたい操作することができるかもしれません。
>>> # マウスの現在位置を取得 ... >>> x, y = pgui.position() >>> x 441 >>> y 659
クリック
これも座標さえわかっちゃえば簡単に処理できます。
for等で座標を加算しながら処理とかすれば、連続して順番にクリック……
なんてことも簡単に作ることができます。
例では+1ずつなので、1pixelずつ斜め右下にクリックしていきます。
x = 100 y = 100 for ii in range(10): pgui.click(x, y) x += 1 y += 1
ドラッグ
dragRel()は相対座標で動きます。
なので、事前にmoveTo()等で場所を指定しておくと想定通りにしやすいかもしれません。
移動した箇所から、グルっと四角くドラッグします。
pgui.moveTo(100, 100) distance = 200 pgui.dragRel(distance, 0, duration=0.5) # → pgui.dragRel(0, distance, duration=0.5) # ↓ pgui.dragRel(-distance, 0, duration=0.5) # ← pgui.dragRel(0, -distance, duration=0.5) # ↑
Windows標準のペイント等を開いておいて実行すると楽しいですよ!
参考
コチラを参考にしました。
https://automatetheboringstuff.com/chapter18/
ここは英語のページですが、日本語で書かれたものが書籍化されています。
英語のページでも、コードと原文、Google翻訳を合わせれば読めなくはないです。
が、「日本語がいい!」という方は、書籍の購入を検討してみるといいかもしれません!
あとがき
PythonでまさかGUI操作までできるとは思っていなかったので、コレをみたときは驚きました。
Pythonのライブラリほんと強いし豊富。
Pythonでの自動化に限らず、色々なツールを使って、日常を自動化できたらなーと目論んでいたりします。
(行動が追い付いてない)
今回の自動化は、キー操作も行うことができたりするらしい!
なのでまだまだコレは今回のモノは、氷山の一角でしかありません。
ぼくももっと見ていこうと思います!