⇨ MENU ⇨ MODULES ⇨ tkinter ⇨ extension ttk
tkinter.ttk.instate ( )
⇨ MENU ⇨ MODULES ⇨ tkinter ⇨ extension ttk
tkinter.ttk.instate ( )
DESCRIPTION.
Teste si un controle est dans un des états dynamiques précisés et exécute, éventuellement, une fonction si cette état est avéré.
SYNTAXE.
Valeur = widget.instate ( etats , fonction , *arguments )
Valeur = ⇨ variable qui recevra la valeur [ optionnel ]
widget ⇨ controle quelconque importé du module d'extension tkinter.ttk [ OBLIGATOIRE ]
.instate ( ) ⇨ appel de la méthode [ OBLIGATOIRE ]
etats ⇨ liste des états dynamiques à tester [ OBLIGATOIRE ]
fonction ⇨ fonction à exécuter [ optionnel ]
*arguments ⇨ paramètres à passer à la fonction [ optionnel ]
REMARQUES.
etats est une list ( ) valide dont les éléments sont des str ( ) identifiant des états dynamiques valides. etats ne peut être qu'une list ( ), même s'il ne contient pas, ou qu'un seul, élément.
Les états dynamiques valides sont :
- "active", le pointeur de la souris se trouve sur le controle et un clique sur le controle provoquera une action ;
- "alternate", l'état du controle a basculé, coché-décoché par exemple ;
- "background", le contrôle est en arrière plan, uniquement pour les système à base de mac et windows ;
- "disabled", le controle est désactivé, il est indisponible pour l'utilisateur ou inactif ;
- "focus", le controle reçoit actuellement le focus, les saisies du clavier lui seront destinées ;
- "hover", le pointeur de la souris se trouve sur le controle ;
- "invalid", la valeurs du contrôle n'est pas valide, elle dépasse le capacité du controle, par exemple pour une échelle de valeur ;
- "pressed", l'utilisateur a cliqué sur le controle, mais n'a pas encore relaché le bouton de la souris ou la touche return ;
- "readonly", l'utilisateur ne peut pas modifier le contenu du controle, mais il n'est pas désactivé, il est en lecture seule ;
- "selected", la case du controle est cochée, en position sélectionnée ;
Si le nom d'un état dynamique est précédé d'un point d'exclamation, c'est le non-état dynamique qui est recherché. Par exemple :
- widget.instate ( [ "focus" ] ), teste et retourne True si le controle a le focus et False dans le cas contraire ;
- widget.instate ( [ "!focus" ] ), teste et retourne False si le controle a le focus et True dans le cas contraire.
Si etats est le seul paramètre passé, l'appel de la méthode tkinter.ttk.instate ( ) retourne True si l'état dynamique du controle, au moment de l'appel, est présent dans etats, sinon False est retourné.
fonction doit être une fonction, quelconque mais valide, définie par le script, ou une méthode native de Python ou importée d'un module. fonction ne le sera appelée qu'une seule fois et uniquement si l'état dynamique du controle, au moment de l'appel, est présent dans etats . Le nom de la fonction appelée, ne doit pas être suivie des parenthèses.
*arguments peut être une variable, une suite de variables, un tuple ( ) ou un dict ( ) reprenant la même structure que celle des paramètres attendus par fonction. Il sera fourni comme argument à la fonction lors de l'appel. Voir l'instruction def pour plus d'informations sur les définitions de fonctions.
EXEMPLE.
import tkinter , tkinter.ttk
def FNC_Pointeur ( ) :
LAB_Etats [ "text" ] = f"\n Etats du bouton [Testez moi] \n { BUT_Test.state ( ) } \n"
if BUT_Test.instate ( [ "pressed" ] ) : LAB_Test [ "text" ] = " Bouton enfoncé. "
elif BUT_Test.instate ( [ "active" ] ) : LAB_Test [ "text" ] = " Bouton survolé. "
else : LAB_Test [ "text" ] = " ... "
LAB_Quitter [ "text" ] = " ... "
BUT_Quitter.instate ( [ "active" ] , FNC_Pret )
TKI_Principal.after ( 100 , FNC_Pointeur )
def FNC_Pret ( ) :
LAB_Quitter [ "text" ] = " Prêt à quitter ? "
TKI_Principal = tkinter.Tk ( )
BUT_Quitter = tkinter.ttk.Button ( TKI_Principal , text = "Quitter" , command = TKI_Principal.destroy )
BUT_Test = tkinter.ttk.Button ( TKI_Principal , text = "Testez moi" )
LAB_Quitter = tkinter.ttk.Label ( TKI_Principal )
LAB_Test = tkinter.ttk.Label ( TKI_Principal )
LAB_Etats = tkinter.ttk.Label ( TKI_Principal , justify = "center" )
LAB_Etats.grid ( row = 0 , column = 0 , columnspan = 2 , sticky = "nesw" )
BUT_Test.grid ( row = 1 , column = 0 , sticky = "nesw" )
LAB_Test.grid ( row = 1 , column = 1 , sticky = "sw" )
BUT_Quitter.grid ( row = 2 , column = 0 , sticky = "nesw" )
LAB_Quitter.grid ( row = 2 , column = 1 , sticky = "sw" )
FNC_Pointeur ( )
TKI_Principal.mainloop ( )
Votre aide est précieuse pour améliorer ce site, alors n'hésitez pas à faire part de