2010-11-21 3 views

Antwort

6

Pack es in alle Richtungen ausfüllen. Fügen Sie nach Bedarf Polster hinzu.

Oder verwenden Sie einen Ort, an dem Sie die relative oder absolute Positionierung verwenden können. Sie können ein relatives x/y von .5/.5 und einen Anker von "c" (center) verwenden.

import Tkinter as tk 

root=tk.Tk() 
f1 = tk.Frame(width=200, height=200, background="red") 
f2 = tk.Frame(width=100, height=100, background="blue") 

f1.pack(fill="both", expand=True, padx=20, pady=20) 
f2.place(in_=f1, anchor="c", relx=.5, rely=.5) 

root.mainloop() 
+0

Es ist leicht verwirrend, da weder f1 noch f2 einen Elternteil deklarieren. Wie kann f1 in root gepackt werden? Außerdem werden 2 verschiedene Geometrie-Manager gemischt. Dies wird vor überall als schlechte Praxis gewarnt. Es funktioniert jedoch und löst ein Problem, mit dem ich seit Stunden festhalte. Also +1! – wsaleem

+1

@wsaleem: Jedes Fenster außer dem Hauptfenster muss ein Elternteil haben. Das Stammfenster ist der Standard, wenn ein Widget nicht ausdrücklich ein Elternteil angibt. Was das Mischen von Packung und Platz (und/oder Gitter) angeht: Das ist in einer Anwendung als Ganzes ganz in Ordnung - sogar vorzuziehen. Sie können sie nicht einfach im selben Fenster mischen. In diesem Fall wird 'f1' vom Root-Fenster verwaltet und' f2' wird von 'f1' verwaltet (wegen des' in_' -Parameters). –