簡體   English   中英

如何阻止 Tkinter Frame 縮小以適應其內容?

[英]How to stop Tkinter Frame from shrinking to fit its contents?

這是給我帶來麻煩的代碼。

f = Frame(root, width=1000, bg="blue")
f.pack(fill=X, expand=True)

l = Label(f, text="hi", width=10, bg="red", fg="white")
l.pack()

如果我用 Label 注釋掉這些行,則 Frame 會以正確的寬度顯示。 但是,添加 Label 似乎會將 Frame 縮小到 Label 的大小。 有沒有辦法防止這種情況發生?

默認情況下, packgrid縮小或增大小部件以適應其內容,這在 99.9% 的情況下都是您想要的。 描述此功能的術語是幾何傳播 使用packpack_propagate )和gridgrid_propagate )時,有一個命令可以打開或關閉幾何傳播。

由於您使用的是pack語法將是:

f.pack_propagate(0)

或者root.pack_propagate(0) ,這取決於您實際想要影響的小部件。 但是,因為您沒有給出框架高度,它的默認高度是 1 像素,所以您仍然可能看不到內部小部件。 為了獲得您想要的全部效果,您需要為包含框架提供寬度和高度。

話雖如此,大多數情況下您應該讓 Tkinter 計算大小。 當您關閉幾何傳播時,您的 GUI 將無法很好地響應分辨率的變化、字體的變化等。Tkinter 的幾何管理器( packplacegrid )非常強大。 你應該學會通過使用正確的工具來利用這種力量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM