【Tkinter】固定サイズのフレーム中央にラベルを配置する方法
Tkinterは、Pythonでデスクトップアプリケーションを構築するための標準的なGUIツールキットです。Tkinterには、アプリケーションのさまざまなコンポーネントを開発するための多彩なウィジェット機能やクラスライブラリが用意されています。
その中でもFrame(フレーム)ウィジェットは、標準的なTkinterウィンドウと同じように動作するコンテナ型ウィジェットです。フレームの中には好きな数だけウィジェットを配置でき、サイズ変更・背景色・レイアウト(ジオメトリマネージャーによる配置方法)といったプロパティも自由にカスタマイズできます。
実装例:フレーム内の中央にラベルを配置する
ここでは、固定サイズのフレーム内にLabelウィジェットを作成し、その中央に配置するケースを考えてみましょう。
中央配置を実現するには、placeジオメトリマネージャーのanchor=CENTERプロパティを使用します。relx=0.5とrely=0.5を指定することで、親コンテナの幅・高さそれぞれ50%の位置(つまり中心)を基準点として、ラベルの中心がそこに合うように配置されます。
# ライブラリをインポート
from tkinter import *
from tkinter import filedialog
# ウィンドウのインスタンスを作成
win = Tk()
# ウィンドウのサイズを設定
win.geometry("700x350")
# フレームウィジェットを作成
frame = Frame(win, width=300, height=300)
frame.grid(row=0, column=0, sticky="NW")
# ラベルウィジェットを作成
label = Label(win, text="I am inside a Frame", font='Arial 17 bold')
label.place(relx=0.5, rely=0.5, anchor=CENTER)
win.mainloop()実行結果
上記のコードを実行すると、700×350のウィンドウが表示され、その中に300×300のフレームが配置されます。ラベル「I am inside a Frame」は、フレームのど真ん中に表示されます。

ポイント解説
- relx / rely:親ウィジェットの幅・高さに対する相対位置(0.0〜1.0)を指定します。0.5を指定すれば中央になります。
- anchor=CENTER:指定した座標に対して、ウィジェットのどの部分を合わせるかを決めます。CENTERを指定すると、ウィジェットの中心が基準点に一致します。
- sticky="NW":gridでの配置時に、フレームを左上(North-West)に寄せて配置しています。
この手法は、フレームだけでなくウィンドウ全体への中央配置にも応用できるため、ダイアログやタイトル画面など、要素を中央に見せたい場面で非常に便利です。
-
Tkinterでウィジェットを非表示にする方法|pack_forget()の使い方を解説
Tkinterアプリケーションでウィジェットを一時的に非表示にしたい場合、pack_forget()メソッドを使用します。このメソッドは、ウィンドウ上からウィジェットのマッピングを解除し、画面から見えなくするために広く使われています。pack_forget()メソッドとはpack_forget()は、pack()ジオメトリマネージャーで配置されたウィジェットを非表示にするためのメソッドです。非表示にされたウィジェットは破棄されるわけではなく、再びpack()を呼び出せば元の状態で再表示できるのが特徴です。サンプルコード以下の例では、ラベルテキストとボタンを作成し、ボタンをクリックするとラベルが
-
Tkinterウィンドウのサイズを固定して変更不可にする方法
Tkinterでは、ウィジェットのサイズに応じてフレームが自動的にリサイズされることがあります。ウィンドウやフレームのサイズを一定に保ちたい場合は、ウィジェットによるフレームのリサイズを防ぐ必要があります。そのために使える主な方法は以下の3つです。pack_propagate(True/False):ブール値を指定することで、ウィジェットによるフレームのリサイズを防止します。False(0)を指定すると、親フレームは子ウィジェットに合わせてサイズが変わらなくなります。resizable(x, y):ユーザーがマウス操作などでウィンドウ自体のサイズを変更できないようにします。引数には幅と高さそれ