LoginSignup
5
2

Pythonでクリックしたスクリーン上の座標を求める方法のメモ(pynput)

Last updated at Posted at 2022-11-03

Pythonで、クリックした画面上の座標を求める方法

※ Pythonに関しては最低限の知識がある方向けです。

まずは、インストール

pynputは外部パッケージなので、pip等を用いインストールします。

pip install pynput

座標を求めるコード

インストールしたら、次のコードを動かせるようになります。

cursol.py
from pynput.mouse import Listener

def on_click(x, y, button, pressed):
    if pressed:
        print('{:5.1f}, {:5.1f}'.format(x, y))

with Listener(on_click = on_click) as listener:
    listener.join()

コードの解説

クリックで押された時に離れた時に、定義されたon_clickが呼ばれます。

  1. 第1引数xは、普通の右方向のx軸。左端が0.0
  2. 第2引数yは、下方向のy軸。上端が0.0
  3. 第3引数buttonは、<enum 'Button'>
  4. 第4引数pressedは、押されたときにTrueで、離れたときにFalse
    どちらか片方がわかれば良かったので、押されたときだけ表示するように条件分岐しています。

クリックされた位置x, yfloat(浮動小数点数)です。
そのままprintで表示すると、小数点未満がたくさん表示され鬱陶しいです。
そこで、コード上ではformatを用いて、
小数点未満は四捨五入で1桁にし、また(小数点含めて)5文字分の幅で右寄せで表示するようにしました。

# そのまま左寄せ表示する
80.1, 10.8  
150.2, 400.3

# 5文字分で右寄せで表示する
 80.1,  10.8
150.2, 400.3

それから、カンマ(+スペース)で区切るようにしてあります。

【注意】プログラムを止める方法

実行させたあとプログラムを止める方法は、
自分のMacの場合、control + zcontrol + cでした。
後者ですと、Pythonがエラーメッセージを10行ほど吐き出すので、ちょっと鬱陶しいです。

参考

Handling the mouse — pynput 1.7.6 documentation

5
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2