Ich versuche, zwei Label-Widgets zu erstellen, die sich oben links und oben rechts in meiner Test-Benutzeroberfläche befinden. Das Problem ist, dass die Widgets zusammenkleben und ich gerne Platz zwischen ihnen hätte.
In meiner Recherche stieß ich auf Vorschläge, die die Verwendung der Optionen sticky, padx und pady empfehlen. Aber egal welche Argumente ich an .grid() übergebe, ich scheine keinen Raum zwischen meinen Widgets schaffen zu können. Mir ist bewusst, dass unabhängig von der Anzahl der Spalten und Reihen zwischen zwei Widgets, wenn diese Reihen/Spalten leer sind, ist es so, als ob sie nicht existieren und die Widgets zusammengeklebt erscheinen.
Wie kann ich mit der Methode .grid() Widgets positionieren, so dass sie nicht zusammenkleben?
Hier ist mein bisheriger Code:
#!/usr/bin/python
from Tkinter import *
class MyApp:
def __init__(self, parent):
self.myParent = parent
self.main_container = Frame(parent)
self.main_container.grid(row=0, rowspan=2, column=0, columnspan=4)
self.top_frame = Frame(self.main_container)
self.top_frame.grid(row=0, column=0, columnspan=4)
self.top_left = Frame(self.top_frame)
self.top_left.grid(row=0, column=0, columnspan=2)
self.top_right = Frame(self.top_frame)
self.top_right.grid(row=0, column=2, columnspan=2)
self.bottom_frame = Frame(self.main_container)
self.bottom_frame.grid(row=2, column=0, columnspan=4)
self.top_left_label = Label(self.top_left, text="Oben Links")
self.top_left_label.grid(row=0, column=0, sticky='W', padx=2, pady=2)
self.top_right_label = Label(self.top_right, text="Oben Rechts")
self.top_right_label.grid(row=0, column=4, sticky='E', padx=2, pady=2)
self.text_box = Text(self.bottom_frame, height=5, width=40)
self.text_box.grid(row=0, column=0)
root = Tk()
root.title("Test UI")
myapp = MyApp(root)
root.mainloop()
~~Update~~
Ich habe Folgendes versucht, aber es hat nicht funktioniert:
self.top_left = Frame(self.top_frame)
self.top_left.grid(row=0, column=0, columnspan=2)
for c in range(2):
self.top_left.columnconfigure(c, weight=2)
self.top_right = Frame(self.top_frame)
self.top_right.grid(row=0, column=2, columnspan=2)
for c in range(2):
self.top_right.columnconfigure(c, weight=2)