Tkinterのイベントでウィジェット名を取得する方法をわかりやすく解説
Tkinterは、PythonでGUIアプリケーションを作成・開発するための標準ライブラリです。ボタンやキャンバスなど豊富なウィジェットが用意されており、これらを組み合わせることでアプリケーションの見た目と機能を柔軟に構築できます。
アプリケーション内に複数のウィジェットを定義していると、「イベント発生時にどのウィジェットが操作されたのか」を知りたい場面があります。Tkinterでは、イベントハンドラに渡される event オブジェクトの event.widget 属性を参照することで、イベントの発生元ウィジェットを取得できます。さらに event.widget["text"] と記述すれば、ウィジェットに設定されたテキスト(表示名)を取り出すことも可能です。取得した名前は print() 関数を使ってコンソールに出力できます。
event.widgetでウィジェットを特定するサンプルコード
以下は、ボタンをクリックしたときに、そのウィジェットの情報を出力するシンプルな例です。
# 必要なライブラリをインポート
from tkinter import *
# tkinterフレーム(ウィンドウ)のインスタンスを作成
win = Tk()
# ウィンドウサイズを設定
win.geometry("700x300")
# イベント発生元のウィジェット名を出力する関数
def on_click(event):
print(event.widget) # ウィジェットオブジェクト自体
print(event.widget["text"]) # ウィジェットに設定されたテキスト
# キャンバスウィジェットを作成
canvas = Canvas(win, width=500, height=300)
canvas.pack()
# クリックイベントをバインドしたボタンを作成
button = Button(win, text="Click")
button.pack()
button.bind("<Button-1>", on_click)
win.mainloop()
実行結果
上記のコードを実行すると、ボタンが配置されたウィンドウが表示されます。
ボタンをクリックすると、コンソールにイベント発生元ウィジェットのパス名とテキストが出力されます。
.!button Click
子ウィジェットの一覧を取得する方法
個別のイベントではなく、ウィンドウに含まれるすべての子ウィジェットをまとめて確認したい場合は、winfo_children() メソッドが便利です。
# ウィンドウの子ウィジェット一覧を出力する関数
def on_click():
print(win.winfo_children())
この関数をボタンの command に指定して実行すると、以下のようにウィンドウ内の全ウィジェットがリスト形式で表示されます。
[<tkinter.Canvas object .!canvas>, <tkinter.Button object .!button>]
覚えておくと便利な関連メソッド
winfo_name():ウィジェットの内部名(パス名の末尾部分)を取得できます。
str(event.widget):ウィジェットのパス名を文字列として手軽に取得できます。
winfo_children():親ウィジェット直下の子ウィジェットをすべて取得できます。
これらの方法を使い分けることで、イベント処理の中で操作対象のウィジェットを正確に識別でき、より堅牢で保守しやすいTkinterアプリケーションを開発できます。
-
TkinterのボタンでEntryウィジェットのテキスト・値を設定する方法
はじめにTkinterのEntryウィジェットは、1行分のテキストを表示・入力するためのウィジェットです。このウィジェットの値や内容は、ボタンのクリックをトリガーとして設定することができます。Entryウィジェットに対する主な操作には、「insert(挿入)」と「delete(削除)」の2種類があります。ここでは、TkinterのButtonウィジェットを使って、Entryウィジェットの内容を設定する方法を解説します。コード例#Import the required libraries from tkinter import * #Create an instance of tkinter
-
Tkinterでウィジェットの現在のX・Y座標を取得する方法
Tkinterは、PythonでGUIアプリケーションを開発するために広く利用されている標準ライブラリです。ボタン、テキストボックス、ラベルなど、さまざまなウィジェットが用意されており、これらを組み合わせることで直感的なユーザーインターフェースを構築できます。さらに、ウィジェットの配置位置や座標も、専用の関数やライブラリを使って柔軟にカスタマイズすることが可能です。ここでは、Tkinterフレーム上に配置したウィジェットの実際の座標を取得する方法を紹介します。ウィジェットの正確な座標を知りたい場合には、Tkinterライブラリが提供するgeometry(ジオメトリ)関連のメソッドを活用します。