Tkinter Grid: Comment positionner les widgets pour qu'ils ne soient pas collés ensemble

Je suis en train de créer l'Étiquette de deux widgets qui sont en haut à gauche et en haut à droite de mon test de l'INTERFACE utilisateur. Le problème est que les widgets sont collés ensemble et j'aimerais y avoir un espace entre eux.

Dans mes recherches, je suis tombé sur des suggestions pour utiliser le collant, padx, et pady options. Mais pas n'importe quels arguments je passe pour .grid() , je ne peux pas semblent être en mesure de créer de l'espace entre mes widgets. Je comprends que, quel que soit le nombre de colonnes et de lignes entre deux widgets, si les lignes/colonnes sont vides, alors c'est comme si elles n'existaient pas et les widgets apparaissent collées ensemble.

À l'aide de l' .grille() la méthode, comment puis-je placer des widgets, de sorte qu'ils ne sont pas collés ensemble?

Voici mon code pour l'instant:

#!/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="Top Left")
self.top_left_label.grid(row=0, column=0, sticky='W', padx=2, pady=2)
self.top_right_label = Label(self.top_right, text="Top Right")
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()

~~Mise à jour~~

J'ai essayé ce qui suit, mais cela n'a pas fonctionné:

    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)

source d'informationauteur Dirty Penguin