Python Language Gestionnaires de géométrie


Exemple

Tkinter dispose de trois mécanismes de gestion de la géométrie: place , pack et grid .

Le gestionnaire de place utilise des coordonnées de pixels absolues.

Le gestionnaire de pack place les widgets sur l'un des 4 côtés. Les nouveaux widgets sont placés à côté des widgets existants.

Le gestionnaire de grid place les widgets dans une grille similaire à une feuille de calcul à redimensionnement dynamique.

Endroit

Les arguments les plus courants pour widget.place sont les suivants:

  • x , la coordonnée x absolue du widget
  • y , coordonnée absolue du widget
  • height , la hauteur absolue du widget
  • width , la largeur absolue du widget

Un exemple de code utilisant place :

class PlaceExample(Frame):
    def __init__(self,master):
        Frame.__init__(self,master)
        self.grid()
        top_text=Label(master,text="This is on top at the origin")
        #top_text.pack()
        top_text.place(x=0,y=0,height=50,width=200)
        bottom_right_text=Label(master,text="This is at position 200,400")
        #top_text.pack()
        bottom_right_text.place(x=200,y=400,height=50,width=200)
# Spawn Window
if __name__=="__main__":
    root=Tk()
    place_frame=PlaceExample(root)
    place_frame.mainloop()

Pack

widget.pack peut prendre les arguments suivants:

  • expand , remplir ou non l'espace laissé par le parent
  • fill , s'il faut développer pour remplir tout l'espace (NONE (par défaut), X, Y ou BOTH)
  • side , le côté à emballer contre (TOP (par défaut), BOTTOM, LEFT ou RIGHT)

la grille

Les arguments de mots-clés les plus utilisés de widget.grid sont les suivants:

  • row , la ligne du widget (la plus petite valeur par défaut inoccupée)
  • rowspan , le nombre de colonnes d'un widget (par défaut 1)
  • column , la colonne du widget (0 par défaut)
  • columnspan , le nombre de colonnes d'un widget (par défaut 1)
  • sticky , où placer le widget si la cellule de la grille est plus grande que cela (combinaison de N, NE, E, SE, S, SW, W, NW)

Les lignes et les colonnes sont indexées à zéro. Les rangs augmentent en baisse et les colonnes augmentent à droite.

Un exemple de code utilisant la grid :

from tkinter import *

class GridExample(Frame):
    def __init__(self,master):
        Frame.__init__(self,master)
        self.grid()
        top_text=Label(self,text="This text appears on top left")
        top_text.grid() # Default position 0, 0
        bottom_text=Label(self,text="This text appears on bottom left")
        bottom_text.grid() # Default position 1, 0
        right_text=Label(self,text="This text appears on the right and spans both rows",
                         wraplength=100)
        # Position is 0,1
        # Rowspan means actual position is [0-1],1
        right_text.grid(row=0,column=1,rowspan=2)

# Spawn Window
if __name__=="__main__":
    root=Tk()
    grid_frame=GridExample(root)
    grid_frame.mainloop()

Ne mélangez jamais le pack et la grid dans le même cadre! Cela conduirait à une impasse de l'application!