2009-09-17 11 views
7

サイズがTkでどのように伝播するかについては何か不明です。これを試してください:Tkinterグリッドジオメトリマネージャサイズ伝播(スティッキー付き)

from Tkinter import * 

root = Tk() 

frame1 = Frame(root, border=4, relief=RIDGE) 
frame1.grid(sticky=E+W) 
frame2 = Frame(root, border=4, relief=RIDGE) 
frame2.grid(sticky=E+W) 

label1 = Label(frame1, text='short', background='white') 
label1.grid(sticky=E+W) 
label2 = Label(frame2, text='quite a bit longer', background='white') 
label2.grid(sticky=E+W) 

root.mainloop() 

ラベル1は内側のフレーム1でラベル2は内側のフレーム2です。 label1は、白い背景のように、label2よりも狭くなります。しかし、frame1とframe2は、その枠線で見られるように同じ幅です。粘着性はlabel1をその親と同じ幅に拡張すると思った。

私は同じ枠内にLABEL1とLABEL2を置く場合は、LABEL2と同じ幅LABEL1出てくる:

frame1 = Frame(root, border=4, relief=RIDGE) 
frame1.grid(sticky=E+W) 

label1 = Label(frame1, text='short', background='white') 
label1.grid(sticky=E+W) 
label2 = Label(frame1, text='quite a bit longer', background='white') 
label2.grid(sticky=E+W) 

私は何をしないのですか?実生活では、私が望むように拡大していないいくつかのスタックされたネストされたフレームがあります。

おかげで、 ダン

答えて

8

行と列は、彼らが成長またはマスターに余分なスペースを埋めるために縮小する方法を説明し、「重み」を持っています。デフォルトでは、行または列の重みはゼロです。つまり、列に入力するようにラベルに指示したが、列にマスターフレームを埋めるように指定していません。

これを修正するには、列に重みを付けます。任意の正の整数がこの特定のケースで行います:ルビー、TCL、PerlやPythonの例で、grid詳細については

frame1.columnconfigure(0, weight=1) 
frame2.columnconfigure(0, weight=1) 

the grid page on tkdocs.com

+0

感謝を参照してください。実際のプログラムでは、明白な効果はなく、重みを追加しようとしました。私は戻って、正しいフレームに追加していることを確認します。 –