GUIでクリックを自動化したかったのでPythonのPyAutoGUIを使ってみた

とある理由でPC上でのクリックを自動化したかったため、色々ツールを調べていました。
Windowsだといい感じのツールはあるようですが、Macだと手軽に使えて良い感じのツールは無さそうです。

ということで、今回はクリック自動化に求める内容もすごく単純なものだったため、プログラムで簡単に書いてみました。

使ったのはこちらです。
pyautogui.readthedocs.io

言われた通りにインストールするだけで使えます。

pip3 install pyobjc-core pyobjc pyautogui

例えば、座標 (100, 200) のポイントをクリックしようと思ったら、以下のように記述します。
座標はスクリーンの左上が原点です。

import pyautogui
pyautogui.click(x=100, y=200)

今回必要だった処理はひたすらクリックし続けるものなので、以下のように書きました。
一応sleepを挟んでいます。

import time
import pyautogui

time.sleep(2)

while True:
    pyautogui.click(x=100, y=200)
    time.sleep(0.1)

これで、0.1秒間隔に座標 (100, 200) をひたすら連打し続けるプログラムができました。
最初の time.sleep(2) は、このプログラム実行後に操作したい画面を開いて準備するための猶予時間として設けてあります。
クリック連打がこれで簡単に実現できました。

ただ、こいつには一つだけ問題があります。
プログラムを止めようと思って Ctr+C を押そうと思っても、 Ctr の直後にクリック判定が入ってしまうと、 Ctr+CLICK つまり右クリックになってしまいます。
その結果、ずっと右クリックメニューが開いたり閉じたりするという、絶妙にめんどくさい感じになっています。

もしかすると、ループのスリープをなくしたり極端に短くすると、延々に止められない(人の限界を超えてくる!)かもしれないので、やるときは自己責任でお願いします。

PyAutoGUIはもっと細かいマウス操作まで行えるだけでなく、キーボード操作や、ディスプレイボックス、スクリーンショットまで扱えるようです。

もっと凝った自動操作をやりたくなったときにまた色々試してみたいと思います。