2012-04-03 171 views
1

我正在試驗Tkinter,因爲我試圖找出有沒有辦法在不使用畫布的情況下設置tkinter的窗口大小。我來到這個如何set frame size question on SO's Question & Answer。所以我繼續通過編寫一個非常小的程序來顯示文本標籤來進行測試。但我發現它是「失蹤」,或消失,當我使用frame.pack_propagate(0)tkinter的.pack_propagate()方法

import tkinter as tk 

root = tk.Tk() 
frame = tk.Frame(root, width=400, height=400) 
# Does not work at the moment, textBox is missing 
# frame.pack_propagate(0) 
frame.pack() 

textBox = tk.Label(frame, text="(x,y): ") 
textBox.pack() 

root.mainloop() 

所以我的問題是,你能解釋一下爲什麼我的textBox(標籤)沒有出現,當我使用frame.pack_propagate(0)代替frame.pack()方法?其次,是否有方法可以在不使用畫布的情況下設置窗口大小?我想知道,因爲我正在寫一系列小程序,在向他的朋友介紹tkinter之前教我的朋友。如果窗口大小在我的tkinter樣本中都是相同的,那將會很好。我只是想知道(好奇)。非常感謝你。

我在MAC OS 10.5.8上使用python 3.2.2。

回答

7

pack_propagate只設置一個標誌,它不會導致框架放置在小部件中。它不能替代呼叫pack

換句話說,你必須這樣做:

# put the frame in its parent 
frame.pack() 

# tell frame not to let its children control its size 
frame.pack_propagate(0) 

# put the textbox in the frame 
textBox.pack() 
+0

我現在明白了,謝謝布萊恩! – George 2012-04-03 15:44:10