Tkinterウィンドウのサイズを固定して変更不可にする方法
Tkinterでは、ウィジェットのサイズに応じてフレームが自動的にリサイズされることがあります。ウィンドウやフレームのサイズを一定に保ちたい場合は、ウィジェットによるフレームのリサイズを防ぐ必要があります。そのために使える主な方法は以下の3つです。
- pack_propagate(True/False):ブール値を指定することで、ウィジェットによるフレームのリサイズを防止します。False(0)を指定すると、親フレームは子ウィジェットに合わせてサイズが変わらなくなります。
- resizable(x, y):ユーザーがマウス操作などでウィンドウ自体のサイズを変更できないようにします。引数には幅と高さそれぞれについてリサイズ可否を0または1で指定します。
- pack(fill, expand):fillとexpandの値を設定することで、geometry()で定義したサイズに合わせてウィジェットを配置・拡張できます。
これらの設定を組み合わせることで、フレーム内のすべてのウィジェットはレスポンシブな動作をせず、ウィンドウも固定サイズのまま維持されます。
サンプルコード
from tkinter import *
win = Tk()
win.geometry("700x300")
# ウィンドウのリサイズを禁止
win.resizable(0, 0)
label = Label(win, text="Select an option", font=('Times New Roman', 12))
label.pack_propagate(0)
label.pack(fill="both", expand=1)
def quit():
win.destroy()
# ボタンを2つ作成
b1 = Button(win, text="Continue")
b1.pack_propagate(0)
b1.pack(fill="both", expand=1)
b2 = Button(win, command=quit, text="Quit")
b2.pack_propagate(0)
b2.pack(fill="both", expand=1)
win.mainloop()実行結果
上記のコードを実行すると、ウィンドウはgeometry()で指定した700×300ピクセルのサイズに固定され、ユーザーがドラッグしてもリサイズできなくなります。resizable(0, 0)によって幅・高さともに変更不可となり、pack_propagate(0)により各ウィジェットが親コンテナのサイズに影響を与えることもありません。

-
Tkinterでウィンドウのサイズを固定する方法(resizableメソッドの使い方)
Tkinterアプリケーションを実行すると、指定された幅と高さを持つウィンドウが表示されます。このウィンドウサイズを固定し、ユーザーによるリサイズを禁止したい場合は、resizable()メソッドを使用します。resizable()メソッドとはresizable()メソッドは、ウィンドウの幅と高さがそれぞれリサイズ可能かどうかを制御するためのメソッドです。引数には2つのブール値(True / False)を渡します。両方にFalseまたは0を指定することで、ウィンドウのサイズを完全に固定できます。第1引数:幅方向のリサイズ可否第2引数:高さ方向のリサイズ可否サンプルコード# tkinterライ
-
tkinterでウィンドウを閉じる方法|destroy()メソッドの使い方を解説
tkinterを使えば、Pythonで手軽にGUIアプリケーションを作成できます。しかし、タイトルバー右上の×ボタン以外の方法でウィンドウやフレームを閉じたい場合、どのように実装すればよいか悩むこともあるでしょう。そのようなときに役立つのが、ウィンドウを破棄して閉じるための .destroy() メソッドです。tkinterの各ウィジェットや属性は互いに独立しているため、「ウィンドウを閉じる処理」を専用の関数として分離して定義できます。これにより、ボタンのクリックイベントからウィンドウを閉じる動作を自由に制御可能です。サンプルコード# ライブラリをインポート from tkinter impo