⇨ MENU ⇨ MODULES ⇨ tkinter ⇨ controles standards ⇨ Listbox
Tutoriel de tkinter.Listbox ( )
⇨ MENU ⇨ MODULES ⇨ tkinter ⇨ controles standards ⇨ Listbox
Tutoriel de tkinter.Listbox ( )
DESCRIPTION.
Créer un nouveau controle de type liste fixe de choix (widget : tkinter.Listbox ( )).
SYNTAXE.
BOX_Liste = tkinter.Listbox ( parent , attribut1 = valeur , ... , attributn = valeur )
BOX_Liste = ⇨ affectation de l'instance du controle [ optionnel ]
tkinter.Listbox ( ) ⇨ création d'une instance de tkinter.Listbox ( ) [ OBLIGATOIRE ]
parent ⇨ conteneur de l'instance de tkinter.Listbox ( ) [ OBLIGATOIRE ]
attribut = valeur ⇨ attribut à modifier avec sa nouvelle valeur [ optionnel ]
REMARQUES.
Le module tkinter, de la bibliothèque standard de Python, propose de type de la liste à choix :
- les listes fixes à choix de la classe tkinter.Listbox ( ), où les choix restes visibles après sélection ;
- les listes déroulantes à choix de la classe tkinter.OptionMenu ( ), où les choix sont dissimulés après sélection.
Les listes fixes à choix, créées avec le constructeur de classe tkinter.Listbox ( ) permettent d'offrir une liste de choix, ou d'options, à l'utilisateur, qui pourra y sélectionner un ou plusieurs éléments pour interagir avec le programme. La liste des choix pourra évoluer selon les besoins du programme.
Les choix, ou éléments, sont présentés dans une fenêtre de sélection qui reste toujours visible, selon les indications du script. Les listes à fixes à choix permettent de sélectionner plusieurs de leur éléments dans une même sélection.
Les objets permanents de type tkinter.Listbox ( ) sont identifiés dans le site par : BOX_.
Voir les conventions sur les variables utilisées dans ce site ...
CREATION D'UNE LISTE FIXE A CHOIX.
Les listes fixe à choix sont crées comme tous les autres controles de tkinter, grâce à leur constructeur de classe tkinter.Listbox ( ) et leur premier attribut doit être l'identification de son conteneur, son parent. Il est prudent de définir, dès la création de la liste fixe à choix, une couleur de fond et ses dimensions.
import tkinter
TKI_Principal = tkinter.Tk ( )
tkinter.Listbox ( TKI_Principal , bg = "palegreen" , width = 15 , height = 5 ).pack ( padx = 5 , pady = 5 )
tkinter.Button ( TKI_Principal , text = "Quitter" , command = TKI_Principal.destroy ).pack ( )
TKI_Principal.mainloop ( )
SURVOLER UNE LISTE FIXE AVEC CHOIX A LA SOURIS.
Dans les listes fixes à choix chaque élément, ou ligne, est identifié par un index, qui correspond à sa place dans la liste, et est exprimé par un int ( ). tkinter propose aussi quelques raccourcis pour des emplacements particuliers : "active" pour l'élément actif au moment de l'appel, "end" pour le dernier l'élément de la liste et la forme "@x,y" qui correspond à l'élément le plus proche du point aux coordonnées x en abscisse et y en ordonnée.
la forme "@x,y" permet, par exemple, de retourner des informations complémentaires sur l'élément de la liste survolé par la souris, pour aider l'utilisateur dans son choix.
Rappel : L'index du premier élément d'une liste est 0.
import tkinter
def FNC_Calcul ( event ) :
kindex = f"@{ event.x },{ event.y }"
kvaleur = BOX_Test.get ( kindex )
BOX_Test.selection_clear ( 0 , "end" )
BOX_Test.selection_set ( kindex )
LAB_Carre [ "text" ] = f"{ kvaleur }² = { int ( kvaleur ) ** 2 }"
TKI_Principal = tkinter.Tk ( )
BUT_Quitter = tkinter.Button ( TKI_Principal , text = "Quitter" , command = TKI_Principal.destroy )
BOX_Test = tkinter.Listbox ( TKI_Principal , selectmode = "single" )
LAB_Carre = tkinter.Label ( TKI_Principal )
for kvaleur in range ( 25 ) : BOX_Test.insert ( "end" , kvaleur )
BOX_Test.bind ( "<Motion>" , FNC_Calcul )
LAB_Carre.pack ( )
BOX_Test.pack ( )ém
TKI_Principal.mainloop ( )
TRIER LES CHOIX DANS UNE LISTE FIXE.
Les listes fixes à choix de tkinter n'ont pas de méthode pour trier leur éléments. Le script devra prévoir une méthode pour trier les choix proposés par une liste fixe. Dans l'exemple suivant la fonction personnalisée FNC_Trier présente un script basic pour un traitement de tri simple à l'aide de classes et méthodes standard du langage Python.
A noter que la fonction utilisée comme clé de tri, key = fonction, devra prévoir les exceptions, priorités et cas particuliers pour le traitement des éléments : voir le "á" retourner en dernière position dans l'exemple.
import tkinter
def FNC_Trier ( ) :
kliste = list ( BOX_Test.get ( 0 , "end" ) )
kliste.sort ( key = str.upper )
TKV_Texte.set ( " ".join ( kliste ) )
TKI_Principal = tkinter.Tk ( )
TKV_Texte = tkinter.StringVar ( )
BUT_Quitter = tkinter.Button ( TKI_Principal , text = "Quitter" , command = TKI_Principal.destroy )
BUT_Trier = tkinter.Button ( TKI_Principal , text = "Trier" , command = FNC_Trier )
BOX_Test = tkinter.Listbox ( TKI_Principal , listvariable = TKV_Texte )
BOX_Test.pack ( )
BUT_Trier.pack ( )
BUT_Quitter.pack ( )
TKV_Texte.set ( "Python est puissant et facile à apprendre." )
TKI_Principal.mainloop ( )
ASSOCIER UN ASCENSEUR A UNE LISTE FIXE A CHOIX.
Les attributs width et height d'un objet créé avec la classe tkinter.Listbox ( ), définissent les dimensions de visibilité de cet l'objet. Si le nombr d'éléments contenu dans cet objet contient plus de lignes, que la valeur associée à l'attribut height, ces lignes ne seront pas visibles.
Dans la plupart des cas, il sera possible de faire défiler le contenu, de haut en bas dans la zone de visibilité. Mais il reste préférable d'associer des objets tkinter.Scrollbar ( ) aux listes fixe à choix pour les parcourir de façon précise, rapide et facile.
import tkinter
TKI_Principal = tkinter.Tk ( )
TKV_Texte = tkinter.StringVar ( )
BUT_Quitter = tkinter.Button ( TKI_Principal , text = "Quitter" , command = TKI_Principal.destroy )
BAR_Vertical = tkinter.Scrollbar ( TKI_Principal )
BOX_Liste = tkinter.Listbox ( TKI_Principal , listvariable = TKV_Texte , height = 5 )
BOX_Liste.grid ( row = 0 , column = 0 , sticky = "nesw" )
BAR_Vertical.grid ( row = 0 , column = 1 , sticky = "nesw" )
BUT_Quitter.grid ( row = 1 , column = 0 , columnspan = 2 , sticky = "nesw" )
BOX_Liste [ "yscrollcommand" ] = BAR_Vertical.set
BAR_Vertical [ "command" ] = BOX_Liste.yview
TKV_Texte.set ( "Python est un langage de programmation puissant et facile à apprendre. Il dispose de structures de données de haut niveau et permet une approche simple mais efficace de la programmation orientée objet." )
TKI_Principal.mainloop ( )
Votre aide est précieuse pour améliorer ce site, alors n'hésitez pas à faire part de