フレームの最小および最大の高さまたは幅を設定する方法は?
-
10-10-2019 - |
質問
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の制限ですか、それともあなたの説明を誤解しましたか?
解決
フレームを最小サイズまたは固定サイズに強制する単一の魔法の関数はありません。ただし、フレームに幅と高さを与えることにより、確かにフレームのサイズを強制することができます。その後、潜在的にさらに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()
所属していません StackOverflow