⇨ MENU ⇨ MODULES ⇨ tkinter ⇨ controles standards ⇨ Toplevel
tkinter.Toplevel ( ).protocol ( )
⇨ MENU ⇨ MODULES ⇨ tkinter ⇨ controles standards ⇨ Toplevel
tkinter.Toplevel ( ).protocol ( )
DESCRIPTION.
Définie ou retourne la fonction à exécuter lorsque qu'une certaine action est réalisée sur la fenêtre.
SYNTAXE.
TKI_Fenetre.protocol ( commande , fonction )
TKI_Fenetre ⇨ instance de la fenêtre tkinter.Toplevel ( ) [ OBLIGATOIRE ]
.protocol ( ) ⇨ appel de la méthode [ OBLIGATOIRE ]
commande ⇨ identification de la commande à surveiller [ optionnel ]
fonction ⇨ fonction à exécuter [ optionnel ]
ou
TKI_Fenetre.wm_protocol ( commande , fonction )
TKI_Fenetre ⇨ instance de la fenêtre tkinter.Toplevel ( ) [ OBLIGATOIRE ]
.wm_protocol ( ) ⇨ appel de la méthode [ OBLIGATOIRE ]
commande ⇨ identification de la commande à surveiller [ optionnel ]
fonction ⇨ fonction à exécuter [ optionnel ]
REMARQUES.
commande doit être le nom d'une commande, ou protocole, conforme aux exigences du gestionnaire de fenêtres présent sur le système de l'utilisateur.
fonction doit être le nom d'une méthode Python ou d'un de ses modules importés dans le script, mais plus généralement une fonction personnalisée par le programme à l'aide de l'instruction def.
Si commande et fonction sont fournis, lors de l'appel de la méthode tkinter.Tk ( ).protocol ( ), alors commande sera ajoutée à celles déjà présentes dans la propriété WM_PROTOCOLS de la fenêtre appelante, et fonction sera appelée et exécutée chaque fois que l'action associée à commande sera détectée par le gestionnaire de fenêtres sur cette fenêtre.
Si fonction vaut une chaine vide (""), alors commande est retirée de la propriété WM_PROTOCOLS de la fenêtre appelante, et plus aucune méthode ne sera exécutée si l'action associée à commande est détectée par le gestionnaire de fenêtres sur cette fenêtre.
Si commande est le seul argument fourni, alors la méthode tkinter.Tk ( ).protocol ( ) retourne fonction associée à cette commande, pour la fenêtre appelante, ou une chaine vide ("") si l'action correspondante à commande n'a pas de gestionnaire de protocole.
Si aucun paramètre n'est donné lors de l'appel de la méthode tkinter.Tk ( ).protocol ( ), c'est la liste de tous les protocoles, associations commande / fonction, de la fenêtre appelante qui est retournée.
A noter que tkinter définit toujours un gestionnaire de protocole pour WM_DELETE_WINDOW, même si le script n'en prévoir aucun. C'est pour cela que la fenêtre envoyant la commande WM_DELETE_WINDOW est détruite par le gestionnaire de fenêtres, si aucun autre protocole n'a été définie dans le programme.
La forme TKI_Fenetre.wm_protocol ( ) appelle la méthode wm_protocol ( ) héritée de la classe tkinter.Wm ( ), le window manager de tkinter, qui gère la communication avec le gestionnaire de fenêtres.
Actuellement il n'existe que 3 commandes définies par l'ICCCM.
"WM_DELETE_WINDOW", pour indiquer que la fenêtre est détruite.
"WM_SAVE_YOURSELF", et maintenant obsolète et doit être replacée par "WM_DELETE_WINDOW".
"WM_TAKE_FOCUS", n'est pas gérée convenablement par tkinter, on préférera gérer la prise de focus par la fenêtre avec le gestionnaire d'événement fenetre.bind ( "<FocusIn>" , fonction ), où fonction est la fonction à exécuter quand la fenêtre fenetre obtient le focus.
Cependant la spécification freedesktop.org [EWMH] définie aussi la commande "_NET_WM_PING", qui que bien maintenant gérée par tkinter, ne doit pas être utilisé dans le script source.
EXEMPLE.
import tkinter
def FNC_Quitter ( ) :
LAB_Message [ "text" ] = "Au revoir"
TKI_Fenetre.update ( )
TKI_Principal.after ( 750 , TKI_Principal.destroy )
TKI_Principal = tkinter.Tk ( )
tkinter.Button ( TKI_Principal , text = "Quitter" , command = FNC_Quitter ).pack ( )
TKI_Fenetre = tkinter.Toplevel ( )
TKI_Fenetre.geometry ( "+300+150" )
TKI_Fenetre.protocol ( "WM_DELETE_WINDOW" , FNC_Quitter )
LAB_Message = tkinter.Label ( TKI_Fenetre , text = "Cliquez sur [x]\nde la fenêtre\npour quitter\nce programme." )
LAB_Message.pack ( )
TKI_Principal.mainloop ( )
Votre aide est précieuse pour améliorer ce site, alors n'hésitez pas à faire part de