Python
 Computer >> コンピューター >  >> プログラミング >> Python

Python Tkinterでマウスの位置(座標)を取得する方法

大規模なアプリケーションでは、イベントを活用することで複数のタスクを効率的に実行・管理できます。Tkinterでは、bind('ハンドラ', 'コールバック')メソッドを使うことで、キーボードやマウスの操作に特定のイベントを紐付けることが可能です。

一般的に、マウスポインタとその動きの追跡は、スクリーンセーバーや2D・3Dゲームの開発などで利用されます。ポインタの座標を表示するには、<Motion>イベントにコールバック関数をバインドし、その中でポインタの位置をxy変数として受け取ります。

サンプルコード

# tkinterライブラリをインポート
from tkinter import *

# tkinterフレーム(ウィンドウ)のインスタンスを作成
win = Tk()

# ウィンドウのサイズを設定
win.geometry("750x250")

def callback(e):
    x = e.x
    y = e.y
    print("ポインタは現在 %d, %d の位置にあります" % (x, y))

# Motionイベントにコールバック関数をバインド
win.bind('', callback)

# メインループを開始
win.mainloop()

実行結果

上記のコードを実行すると、ウィンドウ上でマウスを動かすたびに、その時点でのポインタの実際の座標がコンソールに出力されます。

Pointer is currently at 452, 225
Pointer is currently at 426, 200
Pointer is currently at 409, 187
Pointer is currently at 392, 174
Pointer is currently at 382, 168
Pointer is currently at 378, 163
Pointer is currently at 376, 159
Pointer is currently at 369, 150
Pointer is currently at 366, 141
Pointer is currently at 362, 130

解説のポイント

  • e.x / e.y: イベントオブジェクトから取得できる属性で、ウィンドウ左上を原点としたポインタのX座標・Y座標が格納されています。
  • <Motion>イベント: ウィンドウ内でマウスが移動するたびに発生するため、リアルタイムに座標を追跡できます。
  • bind()メソッド: 第1引数にイベント名、第2引数に呼び出したい関数(コールバック)を指定します。

この仕組みを応用すれば、ドラッグ&ドロップの実装や、マウスカーソルに追従するUI要素の作成など、インタラクティブなアプリケーションの開発にも役立てられます。

  1. Python Tkinterのafter()メソッドの使い方を徹底解説

    Tkinterは、PythonでGUIアプリケーションを作成するための標準ライブラリです。ウィンドウやボタン、ラベルなどのウィジェットを作成・操作するための組み込みメソッドが多数用意されており、データの表示やGUIイベントの処理を簡単に実装できます。本記事では、その中でも特に便利なafter()メソッドの使い方について、具体的なコード例とともに詳しく解説します。after()メソッドの基本構文.after(delay, FuncName=FuncName)このメソッドは、指定した遅延時間(ミリ秒単位)が経過した後に、引数として渡した関数FuncNameを呼び出します。タイマー処理や定期的な更新

  2. Python Tkinterのgeometry()メソッド徹底解説!ウィンドウサイズと配置を自在に制御する方法

    Pythonでは、標準ライブラリ「Tkinter」を使うことで、手軽にGUIアプリケーションを作成できます。TkinterにはGUI開発に役立つ多数のメソッドが用意されていますが、その中でもgeometry()メソッドは最も基本となる重要なメソッドの一つです。このメソッドを使うことで、作成するウィンドウのサイズや表示位置など、画面レイアウトに関するさまざまな属性を自由に設定できます。 geometry()メソッドとは geometry()メソッドは、ウィンドウの大きさを「幅x高さ」という形式の文字列で指定するためのメソッドです。サイズはピクセル単位で制御されるため、レイアウトを細かく調整したい