フレームの最小および最大の高さまたは幅を設定するにはどうすればいいですか? 質問する

フレームの最小および最大の高さまたは幅を設定するにはどうすればいいですか? 質問する

Tkinter ウィンドウのサイズは、次の方法で制御できます。

.minsize()
.maxsize()
.resizable()

Tkinter または ttk フレームのサイズを制御する同等の方法はありますか?

@Bryan: frame1.pack コードを次のように変更しました:

frame1.pack(fill='both', expand=True)
frame1.bind( '<Configure>', maxsize )

そして、次のイベント ハンドラーを追加しました。

# attempt to prevent frame from growing past a certain size
def maxsize( event=None ):
    print frame1.winfo_width()
    if frame1.winfo_width() > 200:
        print 'frame1 wider than 200 pixels'
        frame1.pack_propagate(0)
        frame1.config( width=200 )
        return 'break'

上記のイベント ハンドラは、フレームの幅が大きすぎることを検出しますが、サイズの増加を防ぐことはできません。これは Tkinter の制限ですか、それとも説明を誤解していますか?

ベストアンサー1

フレームを最小サイズまたは固定サイズに強制する単一の魔法の関数はありません。ただし、フレームに幅と高さを指定することにより、フレームのサイズを強制することはできます。次に、さらに 2 つのことを行う必要があります。このウィンドウをコンテナーに配置する場合、ジオメトリ マネージャーがウィンドウを縮小または拡大しないようにする必要があります。2 つ目は、フレームが他のウィジェットのコンテナーである場合、フレームが自身のコンテンツに合わせて縮小または拡大しないように、グリッドまたはパックの伝播をオフにすることです。

ただし、これによってウィンドウのサイズを内部フレームより小さく変更できなくなるわけではないことに注意してください。その場合、フレームは単にクリップされるだけです。

import Tkinter as tk

root = tk.Tk()
frame1 = tk.Frame(root, width=100, height=100, background="bisque")
frame2 = tk.Frame(root, width=50, height = 50, background="#b22222")

frame1.pack(fill=None, expand=False)
frame2.place(relx=.5, rely=.5, anchor="c")

root.mainloop()

おすすめ記事