⇨ MENU ⇨ MODULES ⇨ tkinter ⇨ extension ttk ⇨ Notebook
Tutoriel de tkinter.ttk.Notebook ( )
⇨ MENU ⇨ MODULES ⇨ tkinter ⇨ extension ttk ⇨ Notebook
Tutoriel de tkinter.ttk.Notebook ( )
DESCRIPTION.
Créer un nouveau controle de type conteneur à onglets, ou classeur (widget : tkinter.ttk.Notebook ( )).
SYNTAXE.
NTB_Classeur = tkinter.ttk.Notebook ( parent , attribut1 = valeur , ... , attributn = valeur )
NTB_Classeur = ⇨ affectation de l'instance du controle [ optionnel ]
tkinter.ttk.Notebook ( ) ⇨ création d'une instance de tkinter.ttk.Notebook ( ) [ OBLIGATOIRE ]
parent ⇨ conteneur de l'instance de tkinter.ttk.Notebook ( ) [ OBLIGATOIRE ]
attribut = valeur ⇨ attribut à modifier avec sa nouvelle valeur [ optionnel ]
PRESENTATION DES CONTENEURS A ONGLETS.
La classe tkinter.ttk.Notebook ( ) n'est pas native du module tkinter, il faut donc commencer par importer le module d'extension tkinter.ttk pour pouvoir utiliser cette classe. Voir import pour plus de détails sur l'incorporation de modules, classes et méthodes non built-in dans un script.
Les objets créés avec la classe tkinter.ttk.Notebook ( ), ou conteneurs à onglets, ou classeurs, présentent une collection de conteneurs, ou pages, ou fenêtres, virtuellement placés les uns sous les autres, et individuellement accessible en cliquant sur l'onglet de leur identifiant.
Le classeur doit être créé avant les controles qui seront insérés dans ses onglets. Mais les controles présentés dans l'onglet d'un classeur, doivent être créés avant l'onglet qui doit les accueillir. Il faut donc suivre cette enchainement :
- création du conteneur qui recevra le classeur : fenêtre, conteneur, bandeau, classeur ;
- création du classeur ;
- création des controles, et/ou des conteneur de controles, à insérer dans le classeur ;
- création des onglets avec indication de leur enfant.
Cependant, et bien que cela soit vivement déconseillé, si un onglet devait accueillir un controle unique, et ce controle peut être créé avec l'appel de la méthode tkinter.ttk.Notebook ( ).add ( ). Dans ce cas, il n'est pas utile d'indiquer le parent, conteneur, du controle qui est l'onglet lui-même.
De base, un conteneur à onglets ne peut recevoir qu'un seul et unique controle par onglet. Pour insérer plusieurs controles dans un onglet il faut :
- créer comme enfant de l'onglet un conteneur standards :
- conteneur sans titre tkinter.Frame ( ) ou tkinter.ttk.Frame ( ) ;
- conteneur nommée tkinter.LabelFrame ( ) ou tkinter.ttk.LabelFrame ( ) ;
- bandeau de controles tkinter.PanedWindow ( ) ou tkinter.ttk.PanedWindow ( ) ;
- placer le conteneur dans l'onglet avec la méthode tkinter.ttk.Notebook ( ).add ( ) ;
- créer les controles nécessaires comme enfants du conteneur ;
- placer les controles dans le conteneur avec un gestionnaire de placement :
- tkinter.pack ( ) ;
- tkinter.grid ( ) ;
- tkinter.place ( ).
Si le contenu de l'onglet est un conteneur de controles, les controles enfants du conteneur pourront être créés et placés, voire cachés ou détruits, dans le conteneur avant ou après l'insertion du conteneur dans l'onglet. Bien entendu, les enfants du conteneur, ainsi que la composition du conteneur, pourront être modifiés après l'affichage du classeur.
EXEMPLE.
# --- Incorporation des modules utilises ---
import tkinter , tkinter.ttk
# --- Création de la fenêtre racine de l'interface graphique ---
TKI_Principal = tkinter.Tk ( )
# --- Création d'un conteneur à onglets ---
NTB_Classeur = tkinter.ttk.Notebook ( TKI_Principal )
# --- Un bouton seul dans un onglet ---
BUT_Quitter = tkinter.Button ( TKI_Principal , text = "Quitter" , command = TKI_Principal.destroy )
# --- Un premier conteneur dans un onglet ---
FRM_Presentation = tkinter.Frame ( NTB_Classeur )
tkinter.Label ( FRM_Presentation , text = "Fermeture de l'application" ).pack ( )
tkinter.Button ( FRM_Presentation , text = "Sans action" ).pack ( )
tkinter.Button ( FRM_Presentation , text = "Non programmé" ).pack ( )
tkinter.Button ( FRM_Presentation , text = "Quitter" , command = TKI_Principal.destroy ).pack ( )
# --- Un deuxième conteneur dans un onglet ---
FRM_Suivant = tkinter.Frame ( NTB_Classeur )
tkinter.Label ( FRM_Suivant , text = "Un autre onglet" ).pack ( )
tkinter.Entry ( FRM_Suivant ).pack ( )
tkinter.Spinbox ( FRM_Suivant , values = ( "Python 2.7" , "Python 3.9" , "Java" , "JavaScript" , "C, C++, C#" ) ).pack ( )
tkinter.Button ( FRM_Suivant , text = "Quitter" , command = TKI_Principal.destroy ).pack ( )
# --- Un troisième conteneur dans un onglet ---
FRM_Puis = tkinter.Frame ( NTB_Classeur )
tkinter.Label ( FRM_Puis , text = "Des régulateurs" ).pack ( )
tkinter.Scale ( FRM_Puis , orient = "horizontal" ).pack ( )
tkinter.Scale ( FRM_Puis , orient = "horizontal" ).pack ( )
tkinter.Button ( FRM_Puis , text = "Quitter" , command = TKI_Principal.destroy ).pack ( )
# --- Un quatrième conteneur dans un onglet ---
FRM_Options = tkinter.Frame ( NTB_Classeur )
tkinter.Label ( FRM_Options , text = "Des options et des choix" ).grid ( row = 0 , column = 0 , columnspan = 5 )
for koption in range ( 5 ) :
tkinter.Checkbutton ( FRM_Options , text = f"Choix { koption }" ).grid ( row = 1 , column = koption )
tkinter.Radiobutton ( FRM_Options , text = f"Option { koption }" ).grid ( row = 2 , column = koption )
tkinter.Button ( FRM_Options , text = "Quitter" , command = TKI_Principal.destroy ).grid ( row = 3 , column = 2 )
# --- Création des onglets pour NTB_Classeur et insertion de leur enfant ---
NTB_Classeur.add ( FRM_Puis , text = "Affiner" )
NTB_Classeur.add ( FRM_Suivant , text = "Saisir" )
NTB_Classeur.add ( FRM_Options , text = "Choisir" )
NTB_Classeur.add ( FRM_Presentation , text = "Agir" )
NTB_Classeur.add ( BUT_Quitter , text = "Quitter" )
# --- Placer NTB_Classeur dans son conteneur ---
NTB_Classeur.pack ( )
# --- Lancer la boucle de gestion des événements Placer NTB_Classeur dans son conteneur---
TKI_Principal.mainloop ( )
Votre aide est précieuse pour améliorer ce site, alors n'hésitez pas à faire part de