⇨ MENU ⇨ MODULES ⇨ tkinter ⇨ controles standards ⇨ Canvas
tkinter.Canvas ( ).tag_lower ( )
⇨ MENU ⇨ MODULES ⇨ tkinter ⇨ controles standards ⇨ Canvas
tkinter.Canvas ( ).tag_lower ( )
DESCRIPTION.
Déplace les éléments ayant un certain tag vers le bas de la pile de création d'une zone de dessin.
SYNTAXE.
CAN_Toile.tag_lower ( tag , element )
CAN_Toile ⇨ instance quelconque de tkinter.Canvas ( ) [ OBLIGATOIRE ]
.tag_lower ( ) ⇨ appel de la méthode [ OBLIGATOIRE ]
tag ⇨ groupe d'éléments à déplacer [ OBLIGATOIRE ]
element ⇨ élément au dessous duquel seront déplacés les éléments [ optionnel ]
REMARQUES.
tag est un str ( ) quelconque qui représente l'élément ou le groupe d'éléments qui seront déplacés. Tous les éléments peuvent recevoir un ou plusieurs tags. Les éléments possédant un tag commun, forment un groupe d'éléments, et ils pourront donc être appelés ensemble.
element peut être un int ( ) représentant l'identifiant numérique, un str ( ) indiquant un tag ou la variable désignant un élément. Si element est absent les éléments appartenant au groupe tag seront déplacés à partir du bas de pile de création.
Lors de leur création, chaque élément d'une zone de dessin, reçoit un identifiant numérique, un int ( ) partant de 1 et augmenté de 1 à chaque nouvelle création. Quand il est créé, un élément est donc placé au dessus des autres éléments déjà présents dans la pile des éléments la zone de dessin. Si deux, ou plusieurs, éléments occupent la même surface dans une zone de dessin, l'élément le plus haut dans la pile de création couvre, cache, ceux placés plus bas dans la pile. Il faut donc modifier l'ordre des éléments dans la pile de création pour pouvoir couvrir ou découvrir un ou des éléments.
Les méthodes tkinter.Canvas ( ).tag_lower ( ) (vers le bas, couvrir) et tkinter.Canvas ( ).tag_raise ( ) (vers le haut, découvrir) permettent de modifier l'ordre des éléments dans la pile de création.
Bien qu'ils soient déplacés dans la pile de création, les éléments gardent toujours le même identifiant numérique, celui acquis lors de leur création, mais la pile ne sera plus ordonnée. Si plusieurs éléments sont déplacés en même temps, ils gardent le même ordre relatif dans la pile de création après déplacement.
Les méthodes tkinter.Canvas ( ).tag_lower ( ) et tkinter.Canvas ( ).tag_raise ( ) ne déplace pas les éléments créés avec la méthode tkinter.Canvas ( ).creation_window ( ).
EXEMPLE.
import tkinter
def FNC_Dessus ( ) :
LAB_Avant [ "text" ] = f"Ordre des éléments avant modifications\n{ CAN_Test.find_all ( ) }"
if BUT_Dessus [ "text" ] == "Mettre les VERTS au premier plan" :
BUT_Dessus [ "text" ] = "Mettre les ROSE au premier plan"
CAN_Test.tag_raise ( "vert" )
CAN_Test.tag_lower ( "rose" )
else :
BUT_Dessus [ "text" ] = "Mettre les VERTS au premier plan"
CAN_Test.tag_raise ( "rose" )
CAN_Test.tag_lower ( "vert" )
LAB_Apres [ "text" ] = f"Ordre des éléments après modifications\n{ CAN_Test.find_all ( ) }"
def FNC_Lier ( Q ) :
if Q == "carre" :
if BUT_Carres [ "text" ] == "Désactiver les carrés" :
BUT_Carres [ "text" ] = "Activer les carrés"
CAN_Test.tag_unbind ( "carre" , "<Enter>" )
else :
BUT_Carres [ "text" ] = "Désactiver les carrés"
CAN_Test.tag_bind ( "carre" , "<Enter>" , lambda event : FNC_Type ( "carre" ) )
else :
if BUT_Ronds [ "text" ] == "Désactiver les ronds" :
BUT_Ronds [ "text" ] = "Activer les ronds"
CAN_Test.tag_unbind ( "rond" , "<Enter>" )
else :
BUT_Ronds [ "text" ] = "Désactiver les ronds"
CAN_Test.tag_bind ( "rond" , "<Enter>" , lambda event : FNC_Type ( "rond" ) )
def FNC_Type ( Q ) :
if Q == "sortie" :
CAN_Test.itemconfig ( "texte" , text = "" )
CAN_Test.update ( )
else :
kelement = CAN_Test.find_withtag ( "current" ) [ 0 ]
ktexte = f"Sur un { Q }\nId de l'élément { kelement }"
CAN_Test.itemconfig ( "texte" , text = ktexte )
TKI_Principal = tkinter.Tk ( )
BUT_Quitter = tkinter.Button ( TKI_Principal , text = "Quitter" , command = TKI_Principal.destroy )
BUT_Carres = tkinter.Button ( TKI_Principal , text = "Désactiver les carrés" , command = lambda : FNC_Lier ( "carre" ) )
BUT_Ronds = tkinter.Button ( TKI_Principal , text = "Désactiver les ronds" , command = lambda : FNC_Lier ( "rond" ) )
BUT_Dessus = tkinter.Button ( TKI_Principal , text = "Mettre les VERTS au premier plan" , command = FNC_Dessus )
LAB_Avant = tkinter.Label ( TKI_Principal , relief = "groove" , bd = 3 , height = 2 )
LAB_Apres = tkinter.Label ( TKI_Principal , relief = "ridge" , bd = 3 , height = 2 )
CAN_Test = tkinter.Canvas ( TKI_Principal , bg = "wheat" , width = 300 , height = 300 )
CAN_Test.create_oval ( 200 , 25 , 275 , 100 , fill = "hotpink" , tags = ( "rond" , "rose" ) )
CAN_Test.create_oval ( 25 , 200 , 100 , 275 , fill = "palegreen" , tags = ( "rond" , "vert" ) )
CAN_Test.create_rectangle ( 50 , 50 , 250 , 250 , fill = "sienna" , width = 5 )
CAN_Test.create_rectangle ( 25 , 25 , 100 , 100 , fill = "pink" , tags = ( "carre" , "rose" ) )
CAN_Test.create_rectangle ( 200 , 200 , 275 , 275 , fill = "limegreen" , tags = ( "carre" , "vert" ) )
CAN_Test.create_line ( 30 , 30 , 95 , 95 , fill = "lime" , width = 5 , tags = ( "ligne" , "vert" ) )
CAN_Test.create_line ( 205 , 205 , 270 , 270 , fill = "fuchsia" , width = 5 , tags = ( "ligne" , "rose" ) )
CAN_Test.create_text ( 150 , 150 , fill = "yellow" , font = ( None , 14 ) , justify = "center" , tags = ( "texte" ) )
CAN_Test.tag_bind ( "carre" , "<Enter>" , lambda event : FNC_Type ( "carre" ) )
CAN_Test.tag_bind ( "rond" , "<Enter>" , lambda event : FNC_Type ( "rond" ) )
CAN_Test.tag_bind ( "ligne" , "<Enter>" , lambda event : FNC_Type ( "trait" ) )
CAN_Test.tag_bind ( "all" , "<Leave>" , lambda event : FNC_Type ( "sortie" ) )
CAN_Test.pack ( )
BUT_Carres.pack ( fill = "both" )
BUT_Ronds.pack ( fill = "both" )
BUT_Dessus.pack ( fill = "both" )
LAB_Avant.pack ( fill = "both" )
LAB_Apres.pack ( fill = "both" )
BUT_Quitter.pack ( fill = "both" )
TKI_Principal.mainloop ( )
Votre aide est précieuse pour améliorer ce site, alors n'hésitez pas à faire part de