Jul 03, 2024

Wiki

Python

Aide

edit SideBar

Search

Placer Des Objets

pack, grid et place

Il existe trois moyens de placer des objets (widgets, canvas...) dans une fenêtre graphique : pack, grid et place.

Ces trois moyens sont exclusifs : on ne peut pas commencer à placer les objets dans notre fenêtre avec pack, et continuer avec place.

Pack

Présentation de pack

Pack place l'objet dans la fenêtre, sur le côté que l'on a optionellement précisé, puis ajuste la fenêtre à la taille de l'objet.

Reprenons l'exemple de départ :

  >>> from Tkinter import *
  >>> fen1 = Tk()
  >>> bou1 = Button(fen1, text='Quitter', command =fen1.destroy)

On a alors placé ce bouton dans notre fenêtre, en ajustant cette dernière à la taille du bouton, par

  >>> bou1.pack()

Placement d'objets

On peut ainsi préciser que l'on souhaite placer l'objet à gauche (LEFT), à droite (RIGHT), en haut (TOP) ou en bas (BOTTOM) de l'écran, en précisant la valeur de side :

  >>> bou1.pack(side=LEFT)

On peut aussi réserver un espace autour de notre objet, comme suit :

  >>> bou1.pack(side =RIGHT, padx =3, pady =5)

ce qui signifie que l'on souhaite une marge de 3 pixels en abscisse, et de 5 pixels en ordonnée, autour de notre bouton.

Grid

Présentation de Grid

Dans le cas d’un formulaire, par exemple, on souhaite que nos widgets soient alignées le long d'une grille imaginaire.

On précisera, par exemple, que le texte "Age" est à placer en ligne 0, colonne 2, dans notre grille :

  >>> txt3.grid(row=0,column=2)

D'où le code, répétitif, de cette petite fenêtre :

  >>> from Tkinter import *
  >>> fen1 = Tk()

  >>> txt1 = Label(fen1, text = 'Nom : ')
  >>> txt2 = Label(fen1, text ='Prenom : ')
  >>> txt3 = Label(fen1, text ='Age : ')

  >>> entr1=Entry(fen1)
  >>> entr2=Entry(fen1)
  >>> entr3=Entry(fen1)

  >>> txt1.grid(row=0)
  >>> txt2.grid(row=1)
  >>> entr1.grid(row=0,column=1)
  >>> entr2.grid(row=1,column=1)
  >>> txt3.grid(row=0,column=2)
  >>> entr3.grid(row=0,column=3)

Comportement en cas de lignes vides

Tkinter ignore les lignes (ou les colonnes) vides, et fixe à 0 leurs valeurs quand elles sont absentes.

Alignement

On peut encore préciser l'alignement dans la cellule : au nord (N), au sud (S), à l'est (O) ou à l'ouest (W), avec l'option sticky, par exemple :

  >>> txt1.grid(row = 0, sticky = E)

Etalement sur plusieurs lignes ou colonnes

L'étalement sur plusieurs lignes ou colonnes est possible, avec l'argument rowspan, ou columnspan.

Si on souhaite, par exemple, étaler sur trois lignes, à partir e la cellule (1 ;3), un canevas, avec une marge autour du canevas de 10 pixels en x, et de 5 en y :

  >>> can1.grid(row =1, column =3, rowspan =3, padx =10, pady =5)

Page Actions

Recent Changes

Group & Page

Back Links