Le widget Frame est un widget qui est invisible par défaut. Son rôle est de regrouper d'autres widgets afin de faciliter leur positionnement.
Par exemple, il permettra de placer une série de widgets Entry côte-à-côte comme suit :
Pour réaliser cet interface, il a fallu 6 Frames, que l'on a rendus visibles par des couleurs sur cette image :
Le fonctionnement du Frame va comme suit :
Voici le code qui a permis de créer l'interface présentée plus haut. On voit que la zone de saisie (qui est un Frame, illustré par la bordure verte) et le bouton de soumission sont ajoutés à la fenêtre principale. Chaque paire Label-Entry est ajoutée dans un Frame (illustré par une couleur de fond) qui, lui-même, a été ajouté au Frame de saisie.
Grâce à ce système, il est possible de positionner les Label au-dessus des Entry (c'est le comportement par défaut de pack()) et de positionner chaque paire à côté de la paire précédente (side=LEFT).
# fenêtre principale
fenetre = Tk()
fenetre.title('Mes cookies')
# frames pour la mise en page
zone_saisie = Frame(fenetre)
zone_saisie.pack()
zone1 = Frame(zone_saisie)
zone1.pack(side=LEFT)
zone2 = Frame(zone_saisie)
zone2.pack(side=LEFT)
zone3 = Frame(zone_saisie)
zone3.pack(side=LEFT)
zone4 = Frame(zone_saisie)
zone4.pack(side=LEFT)
zone5 = Frame(zone_saisie)
zone5.pack(side=LEFT)
# nom de domaine
Label(zone1, text='Nom de domaine :').pack(padx=10, pady=(10, 0))
url = Entry(zone1, width=30)
url.pack(padx=10, pady=0)
# nom du cookie
Label(zone2, text='Nom du cookie :').pack(padx=10, pady=(10, 0))
nom = Entry(zone2, width=30)
nom.pack(padx=10, pady=0)
# valeur
Label(zone3, text='Valeur :').pack(padx=10, pady=(10, 0))
valeur = Entry(zone3, width=30)
valeur.pack(padx=10, pady=0)
# date
Label(zone4, text='Date de création :').pack(padx=10, pady=(10, 0))
creation = Entry(zone4, width=30)
creation.pack(padx=10, pady=0)
# durée
Label(zone5, text='Durée en secondes :').pack(padx=10, pady=(10, 0))
duree = Entry(zone5, width=30)
duree.pack(padx=10, pady=0)
# bouton de soumission
bouton_soumission = Button(fenetre, text='Ajouter', command=click_soumettre)
bouton_soumission.pack(padx=5, pady=(5, 15))
▼Publicité