2009-09-17 5 views
7

Ich vermisse etwas über wie Größen in Tk propagieren. Versuchen Sie dies:Tkinter Grid Geometry Manager Größe Ausbreitung (mit sticky)

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

label1 ist innerhalb frame1, und label2 ist innerhalb frame2. label1 ist schmaler als label2, wie der weiße Hintergrund zeigt. Frame1 und Frame2 haben jedoch die gleiche Breite, wie sie an ihren Rändern zu sehen sind. Ich dachte, die Klebrigkeit würde label1 auf die gleiche Breite wie seine Eltern erweitern.

Wenn ich setzen label1 und label2 im gleichen Rahmen, dann kommt label1 so breit wie label2 aus:

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) 

Was bin ich? Im wirklichen Leben habe ich einige gestapelte verschachtelte Frames, die nicht so expandieren, wie ich es möchte. wachsen oder schrumpfen zu füllen zusätzlichen Platz in der Master-

Danke, Dan

Antwort

8

Zeilen und Spalten haben „Gewicht“, die, wie sie beschreibt. Standardmäßig hat eine Zeile oder Spalte ein Gewicht von Null, was bedeutet, dass Sie dem Label gesagt haben, dass es die Spalte füllen soll, aber Sie haben der Spalte nicht gesagt, dass sie den Master-Frame füllen soll.

Um dies zu beheben, geben Sie der Spalte ein Gewicht. Jede positive ganze Zahl wird in diesem speziellen Fall tun:

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

Für weitere Informationen über grid mit Beispielen in Ruby, Tcl, Perl und Python, siehe the grid page on tkdocs.com

+0

Dank. Im realen Programm hatte ich versucht, Gewichte ohne offensichtlichen Effekt hinzuzufügen. Ich gehe zurück und stelle sicher, dass ich sie zu den richtigen Frames hinzufüge. –