⇨ MENU ⇨ MODULES ⇨ tkinter ⇨ liste des méthodes
tkinter.grid ( )
⇨ MENU ⇨ MODULES ⇨ tkinter ⇨ liste des méthodes
tkinter.grid ( )
DESCRIPTION.
Gestionnaire de positionnement des controles dans le conteneur suivant une grille virtuelle.
SYNTAXE.
widget.grid ( attribut1 = valeur , ... , attributn = valeur )
widget ⇨ controle quelconque de l'interface [ OBLIGATOIRE ]
.grid ( ) ⇨ appel de la méthode [ OBLIGATOIRE ]
attribut = valeur ⇨ attribut à modifier avec sa nouvelle valeur [ optionnel ]
REMARQUES.
Dès qu'un gestionnaire de placement est choisi pour placer un controle dans son conteneur, tous les autres controles de ce conteneur doivent l'utiliser. Mais il est possible d'utiliser des gestionnaire différents pour les autres conteneurs de l'applications. tkinter dispose de 3 gestionnaires de placement des controles dans leur conteneur :
- tkinter.pack ( ), un gestionnaire rapide, qui place les controles les uns à la suite des autres ;
- tkinter.grid ( ), un gestionnaire simple, qui place les controles dans une grille virtuelle ;
- tkinter.place ( ), un gestionnaire précis, qui place les controles librement.
La méthode tkinter.grid ( ), gère le placement des controle dans une grille, ou tableau à 2 dimensions. Le conteneur est divisé en lignes (row) horizontalement et en colonnes (column) verticalement. Les index de la première ligne et de la première colonne sont 0 : tkinter.grid ( row = 0 , column = 0 ). L'intersection d'une ligne et d'une colonne est une case, ou cellule.
Des cases voisines, horizontalement et/ou verticalement, peuvent être fusionnée pour accueillir un seul controle. Si une ligne ou une colonne ne reçoit aucun controle, ou si elle devient vide, elle sera ignorée, non visible.
LISTE DES ATTRIBUTS DE LA GRILLE DE PLACEMENT.
column = rang
Indique l'index, ou le premier index, de la colonne où sera placée le controle. rang doit être 0 (zéro) ou un int ( ) positif.
columnspan = quantite
Indique sur combien de colonnes le controle doit s'étendre. Par défaut, un controle est placé dans une seule case de la grille. Cependant, il est possible de fusionner plusieurs cases contiguës pour n'en former qu'une seule où sera placé le controle. quantite doit être un int ( ) positif.
in_ = controle
Place le controle dans un autre controle de la grille. Par exemple : widget.grid ( in_ = gadget ) placera le controle widget dans le controle gadget. controle doit appartenir même conteneur que le controle reçu.
ipadx = taille
Indique la taille de la marge supplémentaire à ajouter à droite et à gauche, à l'intérieur du controle. taille doit être 0 (zéro) ou un int ( ) positif.
ipady = taille
Indique la taille de la marge supplémentaire à ajouter en haut et en bas, à l'intérieur du controle. taille doit être 0 (zéro) ou un int ( ) positif.
padx = taille
Indique la taille de la marge supplémentaire à ajouter à droite et à gauche, à l’extérieur du controle. taille doit être 0 (zéro) ou un int ( ) positif.
pady = taille
Indique la taille de la marge supplémentaire à ajouter en haut et en bas, à l’extérieur du controle. taille doit être 0 (zéro) ou un int ( ) positif.
row = rang
Indique l'index, ou le premier index, de la ligne où sera placée le controle. rang doit être 0 (zéro) ou un int ( ) positif.
rowspan = quantite
Indique sur combien de ligne le controle doit s'étendre. Par défaut, un controle est placé dans une seule case de la grille. Cependant, il est possible de fusionner plusieurs cases contiguës pour n'en former qu'une seule où sera placé le controle. quantite doit être un int ( ) positif.
sticky = ancre
Indique la distribution de l'espace non occupé par le controle dans la cellule. ancre doit avoir l'une des valeur suivantes : "", "n", "ne", "e", "se", "s", "sw", "w", "nw", "ns", "ew", "nse", "nsw", "ewn", "ews", "nes
EXEMPLE.
import tkinter
def FNC_Afficher ( event ) :
kligne = int ( SCA_Ligne.get ( ) )
kvertical = int ( SCA_Vertical.get ( ) )
kcolonne = int ( SCA_Colonne.get ( ) )
khorizontal = int ( SCA_Horizontal.get ( ) )
kposition = SPI_Position.get ( )
kcode = f"LAB_Test.grid ( row = { kligne } , column = { kcolonne } "
if kvertical != 1 : kcode = kcode + f", rowspan = { kvertical } "
if khorizontal != 1 : kcode = kcode + f", columnspan = { khorizontal } "
if kposition != "" : kcode = kcode + f', sticky = "{ kposition }" '
kcode = kcode + ")"
LAB_Fond.grid ( row = kligne , column = kcolonne , rowspan = kvertical , columnspan = khorizontal )
LAB_Test.grid ( row = kligne , column = kcolonne , rowspan = kvertical , columnspan = khorizontal , sticky = kposition )
LAB_Code [ "text" ] = kcode
# --- Creation de l'interface ---
# --- Creation de la fenetre principale ---
TKI_Principal = tkinter.Tk ( )
LAB_Code = tkinter.Label ( TKI_Principal , fg = "blue" , bg = "white" , relief = "groove" , bd = 5 , height = 2 )
# --- Creation du cadre des commandes dans la fenetre principale ---
FRA_Commande = tkinter.LabelFrame ( TKI_Principal , text = " COMMANDES " , labelanchor = "n" )
BUT_Quitter = tkinter.Button ( FRA_Commande , text = "Quitter" , command = TKI_Principal.destroy )
SCA_Ligne = tkinter.Scale ( FRA_Commande , orient = "horizontal" , from_ = 0 , to = 4 , command = FNC_Afficher )
SCA_Vertical = tkinter.Scale ( FRA_Commande , orient = "horizontal" , from_ = 1 , to = 5 , command = FNC_Afficher )
SCA_Colonne = tkinter.Scale ( FRA_Commande , orient = "horizontal" , from_ = 0 , to = 4 , command = FNC_Afficher )
SCA_Horizontal = tkinter.Scale ( FRA_Commande , orient = "horizontal" , from_ = 1 , to = 5 , command = FNC_Afficher)
SPI_Position = tkinter.Spinbox ( FRA_Commande , width = 7 , wrap = True , command = lambda : FNC_Afficher ( None ) )
# --- Placement des controles dans le cadre des commandes ---
tkinter.Label ( FRA_Commande , text = "row " , justify = "right" ).grid ( row = 0 , column = 0 , sticky = "se" )
SCA_Ligne.grid ( row = 0 , column = 1 , sticky = "nesw" )
tkinter.Label ( FRA_Commande , text = "rowspan " , justify = "right" ).grid ( row = 1 , column = 0 , sticky = "se" )
SCA_Vertical.grid ( row = 1 , column = 1 , sticky = "nesw" )
tkinter.Label ( FRA_Commande , text = "column " , justify = "right" ).grid ( row = 2 , column = 0 , sticky = "se" )
SCA_Colonne.grid ( row = 2 , column = 1 , sticky = "nesw" )
tkinter.Label ( FRA_Commande , text = "columnspan " , justify = "right" ).grid ( row = 3 , column = 0 , sticky = "se" )
SCA_Horizontal.grid ( row = 3 , column = 1 , sticky = "nesw" )
tkinter.Label ( FRA_Commande , text = "sticky " , justify = "right" ).grid ( row = 4 , column = 0 , sticky = "se" )
SPI_Position.grid ( row = 4 , column = 1 , sticky = "nesw" )
BUT_Quitter.grid ( row = 5 , column = 0 , columnspan = 2 , sticky = "nesw" )
# --- Creation du cadre des resultats dans la fenetre principale ---
FRA_Apercu = tkinter.LabelFrame ( TKI_Principal , text = " APERCU " , labelanchor = "n" )
for kligne in range ( 5 ) :
for kcolonne in range ( 5 ) :
ktexte = f"row = { kligne }\ncolumn = { kcolonne }"
klabel = tkinter.Label ( FRA_Apercu , text = ktexte , relief = "solid" , bd = 2 , padx = 3 , pady = 3 )
klabel.grid ( row = kligne , column = kcolonne , padx = 1 , pady = 1 , sticky = "nesw" )
LAB_Fond = tkinter.Label ( FRA_Apercu , text = " " , bg = "aqua" , relief = "ridge" , bd = 4 )
LAB_Test = tkinter.Label ( FRA_Apercu , text = "TEST" , fg = "red" , bg = "yellow" , relief = "ridge" , bd = 5 )
# --- Placement des autres controles du cadre des resultats ---
LAB_Fond.grid ( row = 0 , column = 0 , sticky = "nesw" )
LAB_Test.grid ( row = 0 , column = 0 , sticky = "nesw" )
# --- Placement des controles dans la fenetre principale ---
FRA_Commande.grid ( row = 0 , column = 0 , sticky = "nesw" )
FRA_Apercu.grid ( row = 0 , column = 1 , sticky = "nesw" )
LAB_Code.grid ( row = 1 , column = 0 , columnspan = 2 , sticky = "nesw" )
# --- Mise à jour du controle SPI_Position ---
SPI_Position [ "values" ] = ( "" , "n" , "ne" , "e" , "se" , "s" , "sw" , "w" , "nw" , "ns" , "ew" , "nse" , "nsw" , "ewn" , "ews" , "nesw" )
SPI_Position.delete ( 0 , "end" )
SPI_Position.insert ( 0 , "nesw" )
# --- Initialisation et affichage du premier code ---
FNC_Afficher ( None )
# --- Lancement de la boucle d'attente d'événements ---
TKI_Principal.mainloop ( )
Votre aide est précieuse pour améliorer ce site, alors n'hésitez pas à faire part de