⇨ MENU ⇨ MODULES ⇨ tkinter ⇨ controles standards ⇨ Canvas
tkinter.Canvas ( ).find_closest ( )
⇨ MENU ⇨ MODULES ⇨ tkinter ⇨ controles standards ⇨ Canvas
tkinter.Canvas ( ).find_closest ( )
DESCRIPTION.
Retourne, dans un tuple ( ), l'identifiant de l'élément le plus proche des coordonnées indiquées.
SYNTAXE.
TPL_Id = CAN_Toile.find_closest ( abscisse , ordonnee , halo , pivot )
TPL_Id = ⇨ variable qui recevra la valeur [ optionnel ]
CAN_Toile ⇨ instance quelconque de tkinter.Canvas ( ) [ OBLIGATOIRE ]
.addtag_closes ( ) ⇨ appel de la méthode [ OBLIGATOIRE ]
abscisse ⇨ abscisse du point de référence [ OBLIGATOIRE ]
ordonnee ⇨ ordonnée du point de référence [ OBLIGATOIRE ]
halo ⇨ surface de référence [ optionnel ]
pivot ⇨ élément pivot de référence [ optionnel ]
REMARQUES.
abscisse est un int ( ) ou float ( ) exprimé en pixels, il indique la distance entre le point de référence et la bordure gauche d'origine de la zone de dessin.
ordonne est un int ( ) ou float ( ) exprimé en pixels, il indique la distance entre le point de référence et la bordure haute d'origine de la zone de dessin.
L'origine de la zone de dessin, aux coordonnées abscisse = 0 et ordonne = 0, ne sera pas toujours confondue avec les limites gauche et haute de la zone de visibilité de la toile, puisqu'il est possible de définir une zone d'accessibilité bien plus grande que la zone de visibilité avec l'attribut scrollregion de la toile et de naviguer dans toute cette zone d'accessibilité à l'aide de barres de défilement. les attributs abscisse et ordonne font bien référence à des coordonnées de la zone de dessin.
halo est un int ( ) exprimé en pixels, il indique la distance de la région qu'il faut prendre en compte autour du point de référence. Si plusieurs éléments se trouvent dans cette région, c'est l'élément ayant le plus haut identifiant, c'est-à-dire celui créé en dernier, qui sera sélectionné pour l'ajout du tag.
pivot peut être un int ( ) représentant l'identifiant numérique, un str ( ) indiquant un tag ou une variable désignant l'élément. Si pivot est présent, l'élément sélectionnée devra avoir un identifiant supérieur à l'élément désigné par pivot. Si pivot est un tag désignant un groupe d'éléments, c'est l'élément ayant le plus haut identifiant qui sera choisi comme pivot.
Si aucun élément de la zone de dessin ne contient le point aux coordonnées demandées, ou si son identifiant est supérieur à celui de pivot, la méthode tkinter.Canvas ( ).find_closest ( ) retourne un tuple ( ) vide.
EXEMPLE.
import tkinter
def FNC_Cible ( ) :
kabscisse = TKI_Principal.winfo_pointerx ( ) - CAN_Toile.winfo_rootx ( )
kordonnee = TKI_Principal.winfo_pointery ( ) - CAN_Toile.winfo_rooty ( )
kelement = CAN_Toile.find_closest ( kabscisse , kordonnee )
kmessage = f"à l'élément Id. { kelement [ 0 ] } qui est\n"
kmessage += f"au plus proche de { kabscisse } : { kordonnee }"
LAB_Cible [ "text" ] = kmessage
TKI_Principal.after ( 100 , FNC_Cible )
def FNC_Selection ( event ) :
kabscisse = TKI_Principal.winfo_pointerx ( ) - CAN_Toile.winfo_rootx ( )
kordonnee = TKI_Principal.winfo_pointery ( ) - CAN_Toile.winfo_rooty ( )
krang = LAB_Instruction [ "text" ].split ( ) [ -1 ]
ktag = "&" + krang
CAN_Toile.addtag_closest ( ktag , kabscisse , kordonnee )
kelement = CAN_Toile.find_withtag ( ktag )
kmessage = f"Maintenant les tags de l'élément Id. { kelement [ 0 ] }\n"
kmessage += f"sont : { CAN_Toile.itemcget ( kelement [ 0 ] , 'tags' ) }"
LAB_Message [ "text" ] = kmessage
LAB_Instruction [ "text" ] = f"Cliquez pour ajouter { int ( krang ) + 1 }"
TKI_Principal = tkinter.Tk ( )
BUT_Quitter = tkinter.Button ( TKI_Principal , text = "Quitter" , command = TKI_Principal.destroy )
LAB_Instruction = tkinter.Label ( TKI_Principal , text = "Cliquez pour ajouter 1" )
LAB_Cible = tkinter.Label ( TKI_Principal )
LAB_Message = tkinter.Label ( TKI_Principal , justify = "left" , anchor = "w" , height = 3 )
CAN_Toile = tkinter.Canvas ( TKI_Principal , bg = "palegreen" , width = 290 , height = 290 )
for kligne in range ( 10 , 270 , 40 ) :
for kcolonne in range ( 10 , 270 , 40 ) :
CAN_Toile.create_rectangle ( kcolonne , kligne , kcolonne + 30 , kligne + 30 , fill = "cornsilk" )
CAN_Toile.bind ( "<ButtonRelease-1>" , FNC_Selection )
LAB_Instruction.pack ( )
LAB_Cible.pack ( )
CAN_Toile.pack ( )
LAB_Message.pack ( fill = "both" )
BUT_Quitter.pack ( fill = "both" )
FNC_Cible ( )
TKI_Principal.mainloop ( )
Votre aide est précieuse pour améliorer ce site, alors n'hésitez pas à faire part de