Tkinterでウィジェットがフォーカスを持っているかどうかを確認する方法
Tkinterアプリケーションを開発していると、特定のウィジェットにフォーカスが設定されているかどうかを確認したい場面があります。ウィジェットのフォーカス状態を確認するには、ユーティリティメソッドfocus_get()を使用します。このメソッドは、プログラムの実行中に現在フォーカスされているウィジェットの情報を含むオブジェクトを返します。
focus_get()メソッドの概要
focus_get()は、アプリケーション内で現在有効になっている(アクティブな)ウィジェットのインスタンスを取得するためのメソッドです。プログラムの実行中にどのウィジェットがフォーカスを持っているかを動的に把握したい場合に役立ちます。
サンプルコード
以下の例では、<Enter>キーを押すとイベントハンドラが呼び出され、Entryウィジェットのフォーカス状態を確認しています。focus_get()メソッドによって、現在アクティブなウィジェットの情報が返されます。
#Tkinterライブラリをインポート
from tkinter import *
#Tkinterフレームのインスタンスを作成
win= Tk()
#ウィンドウサイズを定義
win.geometry("750x250")
#イベントハンドラを定義
def event_show(event):
label.config(text="Hello World")
e.focus_set()
print("focus is:" ,e.focus_get)
#ラベルを作成
label= Label(win, text="Press Enter",font=('Helvetica 15 underline'))
label.pack()
#エントリウィジェットを作成
e= Entry(win, width= 25)
e.pack(pady=20)
#関数をキー入力にバインド
win.bind('<Return>',lambda event:event_show(event))
win.mainloop()実行結果
上記のコードを実行すると、「Press Enter」というテキストラベルとエントリフィールドを含むウィンドウが表示されます。

ここで<Enter>キーを押すと、シェルに現在フォーカスされているウィジェットの情報が出力されます。
focus is : <bound method Misc.focus_get of <tkinter.Entry object .!entry >>
まとめ
このように、focus_get()メソッドを使えば、実行中のプログラム内でどのウィジェットがフォーカスを持っているかを簡単に確認できます。フォーム入力のバリデーションや、キーボード操作に応じた動的なUI制御など、さまざまな場面で活用できる便利な機能です。
-
Tkinterでテキストウィジェットにスクロールバーを追加する方法
Tkinterのテキストウィジェット(Text Widget)は、複数行にわたるユーザー入力を受け付けるためのウィジェットです。エントリーウィジェット(Entry Widget)とよく似ていますが、最大の違いはテキストウィジェットが複数行のテキスト入力をサポートしている点にあります。テキストウィジェットを作成するには、まずテキストオブジェクトをインスタンス化します。 複数行のテキストを扱う場合、内容がウィジェットの表示領域を超えることがあるため、スクロールバーの追加が不可欠です。テキストウィジェットにスクロールバーを追加するには、ScrolledText(root) 関数を使用します。この関数
-
Tkinterでウィジェットを非表示にする方法|pack_forget()の使い方を解説
Tkinterアプリケーションでウィジェットを一時的に非表示にしたい場合、pack_forget()メソッドを使用します。このメソッドは、ウィンドウ上からウィジェットのマッピングを解除し、画面から見えなくするために広く使われています。pack_forget()メソッドとはpack_forget()は、pack()ジオメトリマネージャーで配置されたウィジェットを非表示にするためのメソッドです。非表示にされたウィジェットは破棄されるわけではなく、再びpack()を呼び出せば元の状態で再表示できるのが特徴です。サンプルコード以下の例では、ラベルテキストとボタンを作成し、ボタンをクリックするとラベルが