LoginSignup
1
2

pyautogui を使ってみた

Posted at

pyautogui とは

Pythonでデスクトップオートメーションを簡単に行うためのモジュールです。
このモジュールを使用すると、マウスの動きやクリック、キーボードの入力など、ユーザーが普段手動で行う操作をプログラムから自動化できます。

使い道

例えば、Celenium ライブラリはブラウザ上のスクレイピングだけなのに対し、こちらはGUI上でファイルのドラッグなども可能。
組み合わせると大部分のルーティン業務は自動化できそう。
bot と認識されないメリット(?)もあります。

基本関数

click(x, y)

モニター上の座標をクリックする。
下で紹介する画像認識で、その見つかった画像(アイコン)をクリックさせることも可能

moveTo(x, y)

モニター上の座標にポインタを移動させる。

scroll()

マウスホイールを上下に動かす。
例えば、Webページで特定の画像が見つからなかったら下にスクロールさせる、というような使い方が可能

dragTo()

ドラッグ&ドロップする。ファイルの移動等に使える

画像判定

locateOnScreen()

ディスプレイ上に、指定した画像が存在するかどうかを調べる。存在する場合、その座標が返る。
特定のアイコンが画面上に存在したらそれをダブルクリック、といった用途で使える。
後述のパラメータを指定して使う。

※複数モニタ使用の場合、メインディスプレイが対象となる
※Retinaディスプレイの場合は、座標が2倍になるので要注意

confidence

一致度の確からしさ。
デフォルトが1(完全一致)になっていて、基本的にこの引数を1より小さく指定しないと画像は取得できない。
0.5 位だと、思わぬ似た画像に引掛かる場合もある
0.7 位ならだいたい見つかる
0.95 にすると、ほぼ似た画像は排除できる

画像の明度については 判定が弱いようで、例えば以下画像だと、0.9上にしないと区別できなかった。

判定用画像
test.jpg

モニター上の画像
screencapture 2.jpg

confidence を .8 にすると、左のグレースケールの画像でも一致すると判定された。
※grayscale というパラメータも存在するが、そちらを False にしても同じ
この画像の場合だと、0.9以上で右にしか一致しなくなった

region

画像を探す範囲をタプルで指定できる。
例えば、(0,100, 400, 300) と指定すると、座標(0, 100) から 400(w) × 300(h)の範囲を検索する

所管

MLと組み合わせると、更に色々と面白いことができそうな予感。
触ってて楽しい。

1
2
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
1
2