Python マウスとキーボードを制御する(マウスの移動) - Why it doesn't work?
Python マウスとキーボードを制御する(マウスのクリック) - Why it doesn't work?
Python マウスとキーボードを制御する(キーボードの制御) - Why it doesn't work?
まだ続きます。
今回は、PyAutoGUIが提供するスクリーンショット機能を利用して座標位置の取得し、その座標を元に画面操作を行ってみたいと思います。
公式を参照に電卓機で計算を実行してみます。
1. 事前準備
事前準備として、まずは、公式と同じように必要なキーの画像を取得します。画像の右側がそれぞれの画像のファイル名とします。
calc_key7.png
calc_key9.png
calc_keyAst.png
calc_keyEqual.png
2. 対象の画像の位置を取得する
計算機を立ち上げた状態で、まずは、それぞれの画像と一致する座標位置を取得します。取得できるタプルは、検知した画像の左側のX座標、上側のY座標、幅、高さの4つの数値を含みます。
>>> import pyautogui >>> button7location = pyautogui.locateOnScreen('calc_key7.png') >>> button7location (959, 481, 43, 34) >>> button9location = pyautogui.locateOnScreen('calc_key9.png') >>> button9location (1039, 482, 39, 33) >>> buttonAlocation = pyautogui.locateOnScreen('calc_keyAst.png') >>> buttonAlocation (1078, 514, 39, 32) >>> buttonEqlocation = pyautogui.locateOnScreen('calc_keyEqual.png') >>> buttonEqlocation (1116, 546, 41, 65)
3. 検知した画像の中心座標の取得
次に、それぞれの画像の中心座標を求めます。
>>> button7x, button7y = pyautogui.center(button7location) >>> button7x, button7y (980, 498) >>> button9x, button9y = pyautogui.center(button9location) >>> button9x, button9y (1058, 498) >>> buttonAx, buttonXy = pyautogui.center(buttonAlocation) >>> buttonAx, buttonAy (1097, 530) >>> buttonEx, buttonEy = pyautogui.center(buttonEqlocation) >>> buttonEx, buttonEy (1136, 578)
4. 検知した画像のクリック
取得した座標を元にclick()関数を実行します。
>>> pyautogui.click(button7x, button7y) >>> pyautogui.click(buttonAx, buttonAy) >>> pyautogui.click(button9x, button9y) >>> pyautogui.click(buttonEx, buttonEy)
答えが正しく表示されました。
ちなみに、2と3は以下のコマンドでも同じ結果となります。ケースバイケースで使い分けましょう。
>>> buttonEx, buttonEy = pyautogui.locateCenterOnScreen('calc_keyEqual.png') >>> buttonEx, buttonEy (1136, 578)
スクリーンショット機能には、まだ他にも多くの機能がありますが、とりあえずは今回でPyAutoGUIのシリーズは一旦終了です。