この記事では、Pythonのpyautogui
ライブラリを使い、マウスカーソルの移動だけでなく、クリック、ドラッグ、スクロールといった、より高度なマウス操作を自動化する方法について解説します。
1. マウスカーソルの現在位置を監視する
GUIオートメーションのスクリプトを作成する際、操作対象の座標を知る必要があります。以下のスクリプトは、現在のマウスカーソルのX, Y座標とRGBカラーをリアルタイムで表示し続ける便利なツールです。
import pyautogui
print('現在のマウス座標を監視します。Ctrl-Cで終了。')
try:
while True:
# 現在の座標と色を取得
x, y = pyautogui.position()
position_str = f'X: {str(x).rjust(4)} Y: {str(y).rjust(4)}'
# 1行に上書き表示する
print(position_str, end='')
print('\b' * len(position_str), end='', flush=True)
except KeyboardInterrupt:
print('\n終了しました。')
end='\r'
や'\b'
を使うことで、出力を改行せずに同じ行に上書きし、座標の変化をリアルタイムで確認しやすくしています。
2. マウスクリック
pyautogui.click()
関数は、マウスのクリック操作を実行します。引数なしで呼び出すと現在位置でクリックし、座標を指定するとその位置へ移動してからクリックします。
import pyautogui
# 現在のマウスカーソル位置で左クリック
# pyautogui.click()
# 画面の(100, 150)座標で左クリック
pyautogui.click(100, 150)
# (200, 250)座標で右クリック
pyautogui.click(200, 250, button='right')
# 3回クリック(トリプルクリック)
pyautogui.click(clicks=3, interval=0.25) # intervalはクリック間の秒数
3. マウスのドラッグ
pyautogui
では、マウスボタンを押したままカーソルを移動させるドラッグ操作も可能です。
dragTo()
は絶対座標へ、dragRel()
は現在位置からの相対座標へドラッグします。
import pyautogui
import time
# ペイントソフトなどを開いておくための5秒間の待機
time.sleep(5)
# ドラッグで渦巻きを描く
distance = 300
while distance > 0:
pyautogui.dragRel(distance, 0, duration=0.2) # 右へ
distance -= 20
pyautogui.dragRel(0, distance, duration=0.2) # 下へ
pyautogui.dragRel(-distance, 0, duration=0.2)# 左へ
distance -= 20
pyautogui.dragRel(0, -distance, duration=0.2)# 上へ
このスクリプトは、アクティブなウィンドウ上で渦巻き模様を描くようにマウスをドラッグします。
4. マウスホイールのスクロール
pyautogui.scroll()
関数は、マウスホイールのスクロールをシミュレートします。引数にはスクロールする量を指定し、正の数で上へ、負の数で下へスクロールします。
import pyautogui
import time
# テキストエディタやブラウザをアクティブにするための5秒間の待機
time.sleep(5)
# 上に200ユニットスクロール
pyautogui.scroll(200)
time.sleep(2)
# 下に200ユニットスクロール
pyautogui.scroll(-200)
まとめ
pyautogui
は、マウスカーソルの位置取得、クリック、ドラッグ、スクロールといった一連の操作をプログラムで制御するための包括的な機能を提供します。これらの関数を組み合わせることで、単純なクリック操作から、描画ソフトでの作画のような複雑なGUI操作まで、幅広いタスクの自動化が可能になります。