Why it doesn't work?

作業のメモ、記録をブログに残しています。

Python マウスとキーボードを制御する(マウスのクリック)

zakiyamatakashi.hatenablog.com
続きです。今回は、マウスのクリックについてまとめます。

1. 事前準備

事前にposition()関数を使用して、クリックしたい座標を調べておきましょう。
私のPCは、デスクトップの左上にゴミ箱があるので、それをクリックしてみます。
まずは、マウスカーソルをゴミ箱のアイコン上に重ねた状態でposition()関数を実行します。

>>> import pyautogui
>>> pyautogui.position()
(36, 34)

2. シングルクリック

テスト用の座標が取得できたら、いったん、マウスをカーソルを移動させ、以下のコマンドを実行します。

>>> pyautogui.moveTo(36, 34)
>>> pyautogui.click()

ゴミ箱のアイコンがクリックされた状態になりました。
f:id:zakiyamatakashi:20180926095030p:plain
click()関数は、デフォルトではマウスの左ボタンをシングルクリックした状態になります。
また、移動先の座標は、以下のように指定することもできます。

>>> pyautogui.click(x=36, y=34)

右ボタンをクリックしたい状態をシミュレートしたい場合には、以下のように指定します。これで、ゴミ箱の右クリックメニューが開きます。キーワード引数buttonには、'left'、'middle'、'right'が指定可能です。また、移動にかける時間も指定可能です。

>>> pyautogui.click(x=36, y=34, button='right', 2)

mouseDown()、mouseUp()といった関数も用意されています。以下の処理はclick()関数と同じ動作をします。click()関数と同じく、ボタンの種類、座標が指定可能です。

>>> pyautogui.mouseDown(); pyautogui.mouseUp()

3. マルチプルクリック

複数回のクリック数、及び間隔も指定可能です。以下のコマンドは座標位置(36, 34)を左ボタンでシングルクリックを0.25秒間隔で2回実行します。通常のダブルクリックと同じです。これで画面の左上にあるゴミ箱が開きました。間隔は整数でも指定可能です。

>>> pyautogui.click(x=36, y=34, clicks=2, interval=0.25)

ダブルクリック用にdoubleClick()関数も用意されています。click()関数と同じく、x座標、y座標、ボタンの種類(右、左、真ん中)、間隔が指定可能です。以下のコマンドは上記のclick()関数と同じ動きをします。

>>> pyautogui.doubleClick(x=36, y=34, interval=0.25)

tripleClick()関数も用意されているようですが、いまのところ必要ないのでテストはしていないです。

4. ドラッグ

dragTo()関数とdragRel()関数を使用することで、マウスのドラッグをシミュレートすることができます。

>>> pyautogui.moveTo(175, 291)
>>> pyautogui.dragTo(375, 291)

座標(175, 291)から、座標(375, 291)に向かって左ボタンをクリックした状態でマウスカーソルを移動します。moveTo()関数と同じくボタンの種類、移動時間も指定可能です。
dragRel()関数はmoveRel()関数と同じく相対的に移動します。下記処理は上記記述と同じ動作をします。

>>> pyautogui.moveTo(175, 291)
>>> pyautogui.dragRel(200, 0)

また、mouseDown()関数とmouseUp()関数を利用して同じ動作を実行できます。

>>> pyautogui.moveTo(175, 291)
>>> pyautogui.mouseDown()
>>> pyautogui.moveTo(375, 291)
>>> pyautogui.mouseUp()

その他にもscroll()関数を使用して、マウスのホィールの動作をシミュレートできるのですが、長くなりそうなので省略します。
まだ続きます。
Python マウスとキーボードを制御する(キーボードの制御) - Why it doesn't work?