2012-04-03 225 views
1

私はキャンバスを使用せずにtkinterのウィンドウサイズを設定する方法があることを知りたいので、Tkinterを試しています。私はset frame size question on SO's Question & Answerにこの方法に来た。だから私は先に進んで、テキストラベルを表示するための非常に小さなプログラムを書くことによってそれをテストします。しかし、私は私の質問は、私が代わりにframe.pack()方法のframe.pack_propagate(0)を使用するときに私のてtextBox(ラベル)が表示されない理由を説明することができ、あるそれは「行方不明」さを発見、または私は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() 

を使用するときに消えますか?第二に、キャンバスを使用せずにウィンドウのサイズを設定する方法はありますか?私はキャンバスを彼に紹介する前に、友達に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

関連する問題