⇨ MENU ⇨ MODULES ⇨ tkinter ⇨ extension ttk ⇨ Style
Tutoriel de tkinter.ttk.Style ( )
⇨ MENU ⇨ MODULES ⇨ tkinter ⇨ extension ttk ⇨ Style
Tutoriel de tkinter.ttk.Style ( )
DESCRIPTION.
Créer un nouveau thème de styles qui pourront être appliqués aux controles pour modifier et harmoniser leur aspect (widget : tkinter.ttk.Style ( )).
SYNTAXE.
STY_Style = tkinter.ttk.Style ( )
STY_Style = ⇨ affectation de l'instance du controle [ optionnel ]
tkinter.ttk.Style ( ) ⇨ création d'une instance de tkinter.ttk.Treeview ( ) [ OBLIGATOIRE ]
REMARQUE.
Les objets permanents de type tkinter.ttk.Style ( ) sont identifiés dans le site par : STY_.
Voir les conventions sur les variables utilisées dans ce site ...
INTRODUTION A L'UTILSATION DES THEMES ET STYLES.
tkinter gère tous les styles dans la classe tkinter.ttk.Style ( ). Il faut donc créer une instance de cette classe pour les manipuler les styles et utiliser ses méthodes.
import tkinter
import tkinter.ttk
TKI_Principal = tkinter.Tk ( )
STY_Theme = tkinter.ttk.Style ( )
tkinter.ttk.Button ( TKI_Principal , text = "Quitter" , command = TKI_Principal.destroy ).pack ( )
TKI_Principal.mainloop ( )
A sa création, un controle tkinter.ttk a par défaut le style de sa classe. Pour modifier son aspect ( couleur, taille, ... ) on peut agir sur le style de sa classe avec la méthode tkinter.ttk.Style ( ).configure ( classe ), mais on modifie alors l'aspect tous les controles de cette classe. classe peut prendre l'une des valeurs suivante : TButton, TCheckbutton, TCombobox, TEntry, TFrame, TLabel, TFabelframe, TMenubutton, TNotebook, TPanedwindow, TProgressbar, TRadiobutton, TScale, TScrollbar, TSeparator, TSizegripe, TSpinbox, Treeview. Le style de parent des tous les styles par défaut est ".". Ce style transmet un certain nombre de caractéristiques aux styles par défaut tel que le police par défaut, la couleur de fond par défaut, le type de relief, ...
import tkinter
import tkinter.ttk
TKI_Principal = tkinter.Tk ( )
STY_Theme = tkinter.ttk.Style ( )
STY_Theme.configure ( "TButton" , foreground = "yellow" , background = "red" )
tkinter.ttk.Button ( TKI_Principal , text = "Temoin" ).pack ( )
tkinter.ttk.Button ( TKI_Principal , text = "Quitter" , command = TKI_Principal.destroy ).pack ( )
TKI_Principal.mainloop ( )
La forme tkinter.ttk.Style ( ).configure ( style ) permet modifier l'aspect de certains controles d'une même classe, sans changer les options de tous les autres objets de cette classe, style doit être un str ( ) au format "prefixe.classe" où prefixe est une chaine de caractères quelconque mais valide. style devient alors l'identifiant d'un style qui devra être associé aux controles dont l'aspect doit être modifié avec leur attribut style = style. Un style peut lui aussi être préfixé pour spécialiser encore plus fortement des controle.
Par exemple, pour l'élaboration d'une super calculatrice scientifique, "TButton", style par défaut de tous les boutons cliquables de l'interface graphique, pourra être décliné en :
- "chiffre.TButton", style des boutons ayant un chiffre ;
- "operation.TButton", style des boutons sélectionnant une opération basique +, -, /, * ;
- "fonction.TButton", style des boutons sélectionnant une opération fonction racine carrée, ... ;
- "programme.TButton", style des boutons sélectionnant une programmation ;
- "option.TButton", style des boutons sélectionnant une option mémoire, rappel mémoire, annuler ;
- "stop.option.TButton", style des boutons quitter, panic, rebboot ;
import tkinter
import tkinter.ttk
TKI_Principal = tkinter.Tk ( )
STY_Theme = tkinter.ttk.Style ( )
STY_Theme.configure ( "chiffre.TButton" , foreground = "blue" , background = "aqua" , width = 3 )
STY_Theme.configure ( "operation.TButton" , foreground = "green" , background = "palegreen" , relief = "solid" )
STY_Theme.configure ( "fonction.TButton" , font = ( None , 12 , "bold" ) , background = "lavender" )
STY_Theme.configure ( "programme.TButton" , foreground = "red" , background = "pink" )
STY_Theme.configure ( "option.TButton" , foreground = "white" , background = "red" )
STY_Theme.configure ( "stop.option.TButton" , foreground = "yellow" , font = ( None , 14 , "bold" ) )
for kchiffre in range ( 10 ) :
tkinter.ttk.Button ( TKI_Principal , text = kchiffre , style = "chiffre.TButton" ).grid ( row = 0 , column = kchiffre )
kcolonne = 0
for ktouche in ( "+" , "-" , "x" , "/" , "=" ) :
tkinter.ttk.Button ( TKI_Principal , text = ktouche , style = "operation.TButton" ).grid ( row = 1 , column = kcolonne )
kcolonne += 1
kcolonne = 0
for ktouche in ( "Racine" , "Cosinus" , "Sinus" , "Aire" ) :
tkinter.ttk.Button ( TKI_Principal , text = ktouche , style = "fonction.TButton" ).grid ( row = 2 , column = kcolonne )
kcolonne += 1
kcolonne = 0
for ktouche in ( "Prog 1" , "Prog 2" , "Prog 3" , "Clear" ) :
tkinter.ttk.Button ( TKI_Principal , text = ktouche , style = "programme.TButton" ).grid ( row = 3 , column = kcolonne )
kcolonne += 1
kcolonne = 0
for ktouche in ( "C" , "CC" , "MR" , "MC" ) :
tkinter.ttk.Button ( TKI_Principal , text = ktouche , style = "option.TButton" ).grid ( row = 4 , column = kcolonne )
kcolonne += 1
tkinter.ttk.Button ( TKI_Principal , text = "Quitter" , style = "stop.option.TButton" , command = TKI_Principal.destroy ).grid ( row = 4 , column = 4 )
TKI_Principal.mainloop ( )
Il est aussi possible de modifier l'aspect du ou des controles selon l'état ou les circonstances dans lequel il se trouve en utilisant tkinter.ttk.Style ( ).map ( style ) pour mapper un style, sans avoir à écrire de fonction personnalisée pour changer l'aspect du controle, ou d'un groupe de controles.
import tkinter
import tkinter.ttk
def FNC_Etat ( ) :
BUT_Quitter [ "state" ] = "normal" if BUT_Quitter.instate ( [ "disabled" ] ) else "disabled"
TKI_Principal = tkinter.Tk ( )
STY_Theme = tkinter.ttk.Style ( )
STY_Theme.configure ( "Test.TButton" , foreground = "yellow" , background = "red" , borderwidth = 10 )
STY_Theme.map ( "Test.TButton" ,
foreground = [ ( "pressed" , "red" ) , ( "active" , "blue" ) , ( "disabled" , "black" ) ] ,
background = [ ( "pressed" , "lime" ) , ( "active" , "orange" ) , ( "disabled" , "aqua" ) ] ,
relief = [ ( "pressed" , "ridge" ) , ( "active" , "groove" ) , ( "disabled" , "solid" ) ] )
BUT_Quitter = tkinter.ttk.Button ( TKI_Principal , text = "Quitter" , style = "Test.TButton" , command = TKI_Principal.destroy )
BUT_Etat = tkinter.ttk.Button ( TKI_Principal , text = "Modifier l'état" , command = FNC_Etat)
BUT_Etat.pack ( )
BUT_Quitter.pack ( )
TKI_Principal.mainloop ( )
Voir les généralités pour un complément d'information sur les styles tkinter.ttk ...
Votre aide est précieuse pour améliorer ce site, alors n'hésitez pas à faire part de