1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
| import tkinter as tk
from tkinter import ttk
def main():
# 1. Créer la fenêtre principale
root = tk.Tk()
root.title("Configuration des Poids de la Grille (Grid Weight)")
root.geometry("450x200") # Définir une taille initiale pour mieux voir l'effet
# 2. Créer le Frame conteneur (Center_Frame dans votre description)
center_frame = ttk.Frame(root, borderwidth=2, relief="groove")
# Utiliser .pack() pour que le frame remplisse la fenêtre
center_frame.pack(fill="both", expand=True, padx=10, pady=10)
# 3. Configuration des poids de la grille du Center_Frame (la solution propre)
# --- Objectif : Colonnes 0 et 2 doivent s'étirer, Colonne 1 doit servir d'espaceur ---
# Configuration de la Colonne 0 (le bouton de gauche)
# Poids = 1 : Cette colonne s'étire.
center_frame.grid_columnconfigure(0, weight=1)
# Configuration de la Colonne 1 (l'espaceur dynamique)
# Poids = 5 : Cette colonne prendra la majeure partie de l'espace disponible (5 fois plus que col 0 et col 2).
center_frame.grid_columnconfigure(1, weight=5)
# Configuration de la Colonne 2 (le bouton de droite)
# Poids = 1 : Cette colonne s'étire de la même manière que la colonne 0.
center_frame.grid_columnconfigure(2, weight=1)
# 4. Ajouter les widgets enfants
# Bouton de Gauche (Colonne 0)
btn_left = ttk.Button(center_frame, text="Gauche (Col 0)")
# Le 'sticky="w"' assure que le widget s'ancre à l'ouest dans son espace.
btn_left.grid(row=0, column=0, padx=5, pady=5, sticky="w")
# Espaceur "virtuel" (Colonne 1)
# On peut y placer un widget, ou le laisser vide ; c'est le poids qui gère l'espace.
# Ici, on place un petit label pour marquer l'espace, mais il n'est pas nécessaire.
spacer_label = ttk.Label(center_frame, text="")
spacer_label.grid(row=0, column=1) # L'espace est créé par le poids de la colonne
# Bouton de Droite (Colonne 2)
btn_right = ttk.Button(center_frame, text="Droite (Col 2)")
# Le 'sticky="e"' assure que le widget s'ancre à l'est dans son espace.
btn_right.grid(row=0, column=2, padx=5, pady=5, sticky="e")
# 5. Lancement de la boucle principale Tkinter
root.mainloop()
if __name__ == '__main__':
main() |