簡體   English   中英

為什么在添加文本框時Tkinter框架會調整大小?

[英]Why does Tkinter frame resize when text box is added to it?

使用此代碼,窗口是500乘500,這是我要的:

from tkinter import *
root = Tk()

frame = Frame(root, width=500, height=500)

frame.pack()
root.mainloop()

但是,當我向框架添加文本框時,它會縮小到文本框的大小:

from tkinter import *
root = Tk()

frame = Frame(root, width=500, height=500)

text = Text(frame, width=10, height=2) # THESE TWO
text.pack()                            # LINES HERE

frame.pack()
root.mainloop()

為什么會發生這種情況,我該如何防止它發生?

默認情況下,框架已啟用“包傳播”。 這意味着封隔器“計算主機必須多大才能完全滿足其從屬設備的需求,並將主機所要求的寬度和高度設置為這些尺寸”(引自官方tcl / tk手冊頁[ 1 ] )。

對於絕大多數情況,這是完全正確的行為。 對於您不想要的時間,您可以在master上調用pack_propagate並將值設置為false。 我認為在近20年的tk編程中,我只需要這樣做六次左右,如果那樣的話。

另一個選擇是在創建所有小部件后使用wm_geometry設置頂層的大小。 這實際上與用戶手動調整窗口大小相同。 這僅適用於頂層窗口,但您不能在幀上使用wm_geometry

暫無
暫無

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

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