2010-10-01 64 views
6

有了這個代碼,窗外是500 500,這是我要爲:爲什麼Tkinter框架在添加文本框時調整大小?

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() 

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

回答

6

該框架默認情況下打開了「包傳播」。這意味着打包者「計算出主機必須滿足其從機需求的大小,並將主機的所需寬度和高度設置爲這些尺寸」(引自官方的tcl/tk手冊頁[1] )。

對絕大多數情況來說,這是完全正確的行爲。對於您不想要的時間,您可以在主設備上調用pack_propagate,並將該值設置爲false。我想在tk編程近20年的時間裏,我只需要做到這一點,如果是這樣的話,就需要做到這一點。

您的另一個選擇是使用wm_geometry在創建所有小部件後設置頂級的大小。這與用戶手動調整窗口大小的效果相同。這隻適用於上層窗口,但不能在框架上使用wm_geometry

+0

非常好,非常感謝! – Kiwi 2010-10-04 13:36:41

相關問題