【Python/tkinter】フレーム(Frame)のサイズを明示的に変更・設定する方法
tkinterのフレーム(Frame)ウィジェットとは
tkinterのFrame(フレーム)ウィジェットは、他のウィジェットをまとめて配置するためのコンテナとして広く利用されています。Frameウィジェットはデフォルトのウィンドウコンテナと同様に動作し、そのサイズや配置はtkinterライブラリが提供する各種ジオメトリマネージャーを使って柔軟に設定できます。
フレームのサイズを明示的に指定したい場合は、pack()ジオメトリマネージャーのsideやfillといったプロパティを活用するのが効果的です。pack()はウィジェットのリサイズに対して適切な制御を提供してくれるため、レイアウトの微調整も行いやすくなります。
サンプルコード
以下の例では、2つのフレームを作成し、pack()ジオメトリマネージャーのプロパティを使ってそれぞれのサイズを設定しています。
# 必要なライブラリをインポート
from tkinter import *
# tkinterフレームのインスタンスを作成
win = Tk()
# ウィンドウのサイズを定義
win.geometry("700x350")
# 終了用の関数を定義
def exit_win():
win.destroy()
# フレームを定義
button_container = Frame(win, relief="sunken", borderwidth=2)
button_container.pack(side="left", fill="x")
side_container = Frame(win, relief="sunken", borderwidth=2)
side_container.pack(side="left", fill="y")
# button_containerフレーム内にボタンを配置
exit_btn = Button(button_container, text="Cancel", command=exit_win)
exit_btn.pack(side="left", padx=10)
save_btn = Button(button_container, text="Save")
save_btn.pack(side="left", padx=10)
# side_containerフレーム内にラベルを配置
txt_label = Label(side_container, text="Tkinter is a Python Library", font=('Helvetica 15 bold'))
txt_label.pack(side="right", padx=10)
win.mainloop()
コードのポイント
- fill="x":フレームを横方向いっぱいに拡張します。
- fill="y":フレームを縦方向いっぱいに拡張します。
- relief="sunken" と borderwidth=2:フレームの境界線を見える化することで、サイズの変化が視覚的に確認しやすくなります。
実行結果
上記のコードを実行すると、2つのフレームを持つウィンドウが表示されます。左側のフレームには「Cancel」「Save」のボタンが、右側のフレームにはテキストラベルが配置されており、ジオメトリマネージャーによって各フレームのサイズが明示的に制御されていることが確認できます。

-
Tkinterウィンドウのサイズを固定して変更不可にする方法
Tkinterでは、ウィジェットのサイズに応じてフレームが自動的にリサイズされることがあります。ウィンドウやフレームのサイズを一定に保ちたい場合は、ウィジェットによるフレームのリサイズを防ぐ必要があります。そのために使える主な方法は以下の3つです。pack_propagate(True/False):ブール値を指定することで、ウィジェットによるフレームのリサイズを防止します。False(0)を指定すると、親フレームは子ウィジェットに合わせてサイズが変わらなくなります。resizable(x, y):ユーザーがマウス操作などでウィンドウ自体のサイズを変更できないようにします。引数には幅と高さそれ
-
Tkinterでボタンのテキストサイズをウィンドウに合わせて動的に変更する方法
Tkinterのフレーム内にボタンを作成した際、ボタンのテキストをメインウィンドウのサイズに合わせて動的に拡大・縮小させたいケースはよくあります。ボタン自体はButtonウィジェットを使えば簡単に作成できますが、テキストサイズを動的に変化させるには、いくつかの機能を組み合わせる必要があります。この記事では、テキスト付きのボタンを作成し、Gridメソッドのrowconfigure()とcolumnconfigure()を使って、メインウィンドウ(ルートウィンドウ)のリサイズに追従できるようにする方法を解説します。bind(<Configure>)でイベントを結び付けるボタンのテキスト