こんにちは!この記事ではpythonでマウス操作を自動化する方法を解説していきます。
pythonでマウス操作を自動化するメリットは、どんなソフトウェアの操作でも自動化できる事です。
pythonではExcelファイルやwebブラウザを操作するパッケージが数多く公開されていますが、それらを選んで使い方を覚えるのは一苦労ですよね。特にpythonの構文やパッケージの使い方に慣れていない場合、実装に時間を取られすぎて「人間がやった方が早いじゃないか」といった残念な結果になりかねません…そんな経験ありませんか?
この記事ではPyAutoGUIというパッケージを使ってPCのマウスを自動操作する方法を説明します。そして、学んだ内容を使ってペイントソフトで四角形を自動で描くプログラムを紹介します。
この記事で自動化知識を身に付けて日頃の面倒な作業を自動化しませんか?それでは一緒に学んでいきましょう!
PyAutoGUIでs自動化
PyAutoGUIのインストール
初めてPyAutoGUIを使用する場合は下記のコマンドでインストールしましょう。
pip install pyautogui
自動化のために必要な画面座標の知識
普段、私たちはマウスやタッチパッドを使って画面上の矢印を動かしています。一方で、プログラミングでは画面の「座標」を指定する事で矢印を動かす事ができます。PyAutoGUIの画面座標は左上が原点で右下が各軸の最大値となっています。例えば、一般的な画面サイズであるフルHDでは下記のような座標になります。
また、ゲーミング用などのハイスペックなPC環境ではフルHDよりも高画質な4Kモニタを採用している場合があります。4Kの場合、画面右下の最大値は(3839, 2159)です。
パッケージのインポート
インストールしたPyAutoGUIを使うためにパッケージをインポートしましょう。
import pyautogui
マウス移動
次に、マウス操作の基本となる矢印の移動を学んでいきましょう!
マウスの移動にはmoveTo()を使います。第一引数に移動したいx座標を、第二引数に移動したいy座標を入力しましょう。
pyautogui.moveTo(300, 400) # x=300, y=400の位置に移動
また、矢印の現在位置を取得するにはposition()を使います。下記のように現在地の座標をアンパック代入で受け取る事が可能です。
pos_x, pos_y = pyautogui.position() # 現在位置を保存
先ほど取得した現在地の情報を利用して「現在位置からx方向に100、y方向に50移動」という命令を書くと下記のようになります。
pyautogui.moveTo(pos_x+100, pos_y+50) # 現在位置からx方向に100、y方向に50移動
マウスクリック
次に、マウスのクリック動作の操作方法を学んでいきましょう!
基本的に、マウスのクリック動作はclick()を利用します。単純な左クリックは下記で実行できます。
pyautogui.click() # 左クリック
また、指定した座標でクリックするにはclick()の引数にxy座標を指定します。
pyautogui.click(x=100, y=200) # 座標指定の左クリック
右クリックの場合は引数を下記の様に指定します。
pyautogui.click(button='right') # 右クリック
ダブルクリックの様に短時間で複数回クリックしたい場合はクリック回数を指定します。また、クリックする時間間隔も指定可能です。
pyautogui.click(clicks=2) # 2回左クリック
pyautogui.click(clicks=2, interval=0.5) # 0.5秒間隔で2回左クリック
マウスのボタンを長押しするにはmouseDown()を使います。mouseDown()実行後はマウスの左ボタンを押しっぱなしの状態になります。この状態を解除するにはmouseUp()を実行します。
pyautogui.mouseDown() # 左ボタンの長押し
pyautogui.mouseUp() # 左ボタンの長押し解除
マウスホイール操作
マウスのスクロール動作はscroll()を使って制御します。引数に正の整数を渡すと上方向にスクロールし、負の整数を渡すと下方向にスクロールします。OS依存でスクロール量が変化するので、お使いの環境で数字を調整しましょう。渡す数字が大きいほど大きくスクロールするので「変化が小さいな」と思ったら数値を大きくすると分かりやすいですよ。
# 上方向にスクロール
# →500でどれくらいスクロールするかはOS依存で変化する
# →数値が大きいほど大きくスクロールできる
pyautogui.scroll(500)
# 下方向にスクロール
# →マイナスの値を渡すと下方向にスクロールする
pyautogui.scroll(-500)
ペイントを自動化して四角形を描いてみる
これまでに学んだ知識を使ってペイントで四角形を自動で描いてみましょう!
実行結果
ソースコード
# paintで正方形を描く
import pyautogui
length = 100 # 長方形の短辺の長さを定義
# 線の色を変更
pyautogui.click(x=670, y=225)
# 四角形の初期位置へ移動
pyautogui.moveTo(300, 400)
pos_x, pos_y = pyautogui.position() # 現在位置を保存
# マウス長押し
pyautogui.mouseDown()
# 長方形描画
pyautogui.moveTo(pos_x+length*4, pos_y) # マウスを右に移動
pos_x, pos_y = pyautogui.position() # 現在位置を保存
pyautogui.moveTo(pos_x, pos_y+length) # マウスを下に移動
pos_x, pos_y = pyautogui.position() # 現在位置を保存
pyautogui.moveTo(pos_x-length*4, pos_y) # マウスを左に移動
pos_x, pos_y = pyautogui.position() # 現在位置を保存
pyautogui.moveTo(pos_x, pos_y-length) # マウスを上に移動
# マウス長押し解除
pyautogui.mouseUp()
まとめ
今回はpythonでマウスを自動操作する方法を紹介しました。PyAutoGUIを使うとマウスやキーボード操作の自動化プログラムを簡単に実装する事ができます。さらに、文字認識や画像認識と組み合わせると可能性は無限大なので、ぜひ皆さんも調べてみてくださいね!
コメント