あるくメカトロウィーゴ入門(3) - Pythonからの操作
「あるくメカトロウィーゴ」をPython から操作する方法をまとめました。
前回
1. PyAudioGUI
「PyAutoGUI」は、人間用GUIの自動化Pythonモジュールです。スクリプトからマウスやキーボードを制御することができます。
これを使ってあるくメカトロウィーゴをPythonから操作します。
2. インストール
Python3の仮想環境で、「pyautogui」と「opencv-python」をインストールします。
$ pip install pyautogui
$ pip install opencv-python
3. マウスとキーボードの制御
マウスとキーボードの制御方法は、次のとおりです。
import pyautogui
# 画面のサイズ
screenWidth, screenHeight = pyautogui.size()
print(screenWidth, screenHeight)
# 現在のマウスのXY座標
currentMouseX, currentMouseY = pyautogui.position()
print(currentMouseX, currentMouseY)
# マウス移動
pyautogui.moveTo(100, 100)
# マウスクリック
pyautogui.click()
pyautogui.click(100, 100)
# pyautogui.doubleClick()
# キー入力
pyautogui.write('Hello world!', interval=0.25)
# pyautogui.press('esc')
# pyautogui.keyDown('shift')
# pyautogui.write(['left', 'left', 'left', 'left', 'left', 'left'])
# pyautogui.keyUp('shift')
# pyautogui.hotkey('ctrl', 'c')
4. メッセージボックスの表示
メッセージボックスの表示方法は、次のとおりです。
import pyautogui
# アラート
r = pyautogui.alert('アラートです')
print(r)
# コンファーム(OK/Cancel)
r = pyautogui.confirm('コンファームです')
print(r)
# コンファーム(A/B/C)
r = pyautogui.confirm('選択してください', buttons=['A', 'B', 'C'])
print(r)
# プロンプト
r = pyautogui.prompt('プロンプトです')
print(r)
# パスワード
r = pyautogui.password('パスワード入力です')
print(r)
5. スクリーンショット
スクリーンショットの方法は、次のとおりです。画像処理にはpillowを使います。
import pyautogui
# スクリーンショット
im1 = pyautogui.screenshot()
im1.save('my_screenshot1.png')
# スクリーンショット
im2 = pyautogui.screenshot('my_screenshot2.png')
6. 画像とマッチングする領域の取得
画面上の画像とマッチング領域を取得することもできます。
import pyautogui
# ボタンのクリック
buttonx, buttony = list(pyautogui.locateCenterOnScreen('button.jpg', confidence=0.9))
pyautogui.click(buttonx, buttony)
7. あるくメカトロウィーゴをPythonから操作
あるくメカトロウィーゴをPythonから操作する手順は、次のとおりです。
(1) 以下の画像とPythonスクリプトを準備。
・button.jpg
・button.py
import pyautogui
# ボタンのクリック
buttonx, buttony = list(pyautogui.locateCenterOnScreen('button.jpg', confidence=0.9))
pyautogui.click(buttonx, buttony)
(2) ロボットリモコンを起動。
実行したいボタン(以下では「♪桜」)を準備しておいてください。
(3) 以下のPythonスクリプトを実行。
実行直後にブラウザにフォーカスを戻しておいてください。
成功するとメカトロウィーゴが踊ります。
この記事が気に入ったらサポートをしてみませんか?