⇨ MENU ⇨ MODULES ⇨ tkinter ⇨ extension ttk ⇨ Style
tkinter.ttk.Style ( ).configure ( )
⇨ MENU ⇨ MODULES ⇨ tkinter ⇨ extension ttk ⇨ Style
tkinter.ttk.Style ( ).configure ( )
DESCRIPTION.
Créer et définit un nouveau style, ou modifie, ou retourne, les caractéristiques d'un style existant.
SYNTAXE.
STY_Theme.configure ( style , attribut1 = valeur , ... , attributn = valeur )
STY_Theme = ⇨ instance quelconque de tkinter.ttk.Style ( ) [ OBLIGATOIRE ]
.configure ( ) ⇨ appel de la méthode [ OBLIGATOIRE ]
style ⇨ identifiant d'un style [ OBLIGATOIRE ]
attribut = valeur ⇨ attribut à modifier avec sa nouvelle valeur [ optionnel ]
REMARQUES.
style est un str ( ) identifiant un nom de style. Si style n'existe pas dans le thème de styles actuellement utilisé par l'interface graphique, il est créé. style doit avoir la forme :
- ".", qui est le style ancêtre de tous les autres styles du thème ;
- "defaut", où defaut est le nom du style par défaut du type de controle, par exemple "TButton" ;
- "prefixe.defaut", où prefixe.defaut est le nom d'un style obtenu après clonage de defaut, par exemple "boss.TButton".
La liste des attributs possibles, pour un style donné, dépend de la nature du controle qui est associé à ce style. Pour connaitre les attributs de mise en forme d'un type de controle tkinter.ttk, il faut se référé à son homologue tkinter, s'il existe, sinon à la définition du controle tkinter.ttk.
EXEMPLES.
1. Les styles par défaut des controles tkinter.ttk.
Rappel : Un style fait toujours parti d'un thème. Un thème regroupe au moins un style par type de controle. Un seul thème peut être utilisé à la fois pour formater une interface graphique mais on peut changer de thème durant l’existence de la GUI.
A sa création, un controle tkinter.ttk a par défaut le style de sa classe. Il n'est donc pas utile d'associer un controle à son style par défaut lors de sa création. 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.
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 ( )
2. Création de nouveau style à partir des styles par défaut tkinter.ttk.
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. Si l'identifiant "prefixe.classe" est absent des style du thème actuel, il est créé avec les même caractéristiques que son style parent. Comme style peut lui aussi être préfixé pour spécialiser encore plus fortement des controles, le style parent d'un nouveau style n'est pas forcément un style par défaut..
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, sinus, ... ;
- "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, reboot.
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 ( )
3. Caractéristiques des styles tkinter.ttk.
La méthode tkinter.ttk.Style ( ).configure ( style ) utilisée :
- sans autre paramètre retourne tous les attributs modifiés du style, après l'avoir créé si nécessaire ;
- avec un nom d'attribut sans affectation de valeur retourne la valeur de cette attributs.
Les valeurs des attributs non modifiées dans un style ne sont pas retourné. Pour connaitre ces valeurs il faut les consulter dans le parent, voire grand-parent, ou remonter encore plus haut, du style.
import tkinter , tkinter.ttk
TPL_Styles = ( "." , "TButton" , "touches.TButton" , "fonction.TButton" , "option.TButton" , "stop.option.TButton" , "Treeview" )
def FNC_Style ( event ) :
BOX_Options.delete ( 0 , "end" )
koptions = tkinter.ttk.Style ( ).configure ( BOX_Style.get ( ) )
if koptions != None :
for koption , kvaleur in koptions.items ( ) :
BOX_Options.insert ( "end" , f"{ koption } : { kvaleur }" )
TKI_Principal = tkinter.Tk ( )
tkinter.ttk.Style ( ).configure ( "touches.TButton" , foreground = "blue" , background = "aqua" , width = 3 )
tkinter.ttk.Style ( ).configure ( "fonction.TButton" , font = ( None , 12 , "bold" ) , background = "lavender" , relief = "Solid" )
tkinter.ttk.Style ( ).configure ( "option.TButton" , foreground = "white" , background = "red" )
tkinter.ttk.Style ( ).configure ( "stop.option.TButton" , foreground = "yellow" , font = ( None , 14 , "bold" ) )
BUT_Quitter = tkinter.Button ( TKI_Principal , text = "Quitter" , command = TKI_Principal.destroy )
BOX_Style = tkinter.ttk.Combobox ( TKI_Principal , values = TPL_Styles )
BOX_Options = tkinter.Listbox ( TKI_Principal )
BOX_Style.bind ( "<<ComboboxSelected>>" , FNC_Style )
BOX_Style.set ( "TButton" )
BOX_Options.grid ( row = 0 , column = 0 )
BOX_Style.grid ( row = 1 , column = 0 )
BUT_Quitter.grid ( row = 2 , column = 0 )
FNC_Style ( None )
TKI_Principal.mainloop ( )
Votre aide est précieuse pour améliorer ce site, alors n'hésitez pas à faire part de