tkinterで利用できるMotionイベントを使ってマウスの現在位置を表示させる方法を、実際にコードを書きながらまとめました。
【スポンサーリンク】
Motionイベントの概要
ウィジェット上でマウスポインタの移動やクリックを行うと、様々なイベントが発生します。
例えば、マウスポインタがtkinterのウィジェット上に移動したときにはMotionイベントが発生し、クリック時にはButtonイベント、クリック解除時にはButtonRelease等のイベントが発生します。
今回は、Motionイベントを利用して、ウィジェット上のマウスポインタの現在位置をリアルタイムで表示させるプログラムを作成してみます。
応用例:マウスポインタがウィジェットに重なった際に色を変更 www.python-beginners.com
マウスポインタの現在位置表示
作成したウィジェットを以下に示します。ラベルウィジェット上でマウスポインタを動かすと、座標をラベル上にリアルタイムで表示します。
コード
import tkinter class MousePosition(tkinter.Label): ''' マウスポインタの座標を表示するラベル ''' def __init__(self, master): # 適当な大きさに設定 super().__init__( master, text="mouse position", width=50, height=20, ) # Label上で<Motion>イベント発生時、 # show_positionを実行するように設定 self.bind("<Motion>", self.show_position) def show_position(self, event): x, y = event.x, event.y # x,y座標取得 self["text"] = str(x) + ", " + str(y) # 座標表示 #ラベルの表示 if __name__ == "__main__": root = tkinter.Tk() l = MousePosition(root) l.pack() root.mainloop()
Motionイベントと関数の紐づけ
以下の様にイベントと関数をbind
で紐づけることで、ウィジェット上でイベントが発生したとき、指定した関数を実行させることが可能になります。
ウィジェット.bind(イベント名, 関数)
今回は、Label(self)上でMotionイベントが発生したとき、show_positionを実行するように設定しています。
【スポンサーリンク】