⇨ MENU ⇨ MODULES ⇨ tkinter ⇨ controles standards ⇨ Canvas
tkinter.Canvas ( ).create_polygon ( )
⇨ MENU ⇨ MODULES ⇨ tkinter ⇨ controles standards ⇨ Canvas
tkinter.Canvas ( ).create_polygon ( )
DESCRIPTION.
Crée une une nouvelle figure géométrique plus ou moins complexe dans une zone de dessin.
SYNTAXE.
CAN_Element = CAN_Toile.create_polygon ( *coordonnes , attribut1 = valeur , ... , attributn = valeur )
CAN_Element = ⇨ variable identifiant l'élément [ optionnel ]
CAN_Toile ⇨ instance quelconque de tkinter.Canvas ( ) [ OBLIGATOIRE ]
.create_polygon ( ) ⇨ appel de la méthode [ OBLIGATOIRE ]
*coordonnes ⇨ coordonnées des sommets de la figure [ OBLIGATOIRE ]
attribut = valeur ⇨ attribut à modifier avec sa nouvelle valeur [ optionnel ]
REMARQUES.
*coordonnes doit être une suite d'au-moins de 6 int ( ) ou float ( ), pouvant être groupés dans un tuple ( ) ou une list ( ), représentant les coordonnées des sommets.
La collection de valeurs, *coordonnes, doit posséder un nombre d'éléments paires. Les valeurs de la collection ayant des index paires (0, 2, 4, ...) correspondent aux abscisses des sommets et les valeurs avec des index impaires (1, 3, 5, ...), correspondent aux ordonnées des sommets. *coordonnes sera donc composé de 6 éléments pour dessiner un triangle, 8 pour un quadrilatère, 10 pour un pentagone, 12 pour un hexagone, et ainsi de suite.
La quantité de valeurs dans la collection, *coordonnes, peut augmenter ou diminuer, en utilisant la méthode tkinter.Canvas ( ).coords ( ), en restant supérieur ou égal à 6 int ( ) et toujours en nombre paire, pour ajouter ou réduire le nombre de sommets de l'élément.
LISTE DES ATTRIBUTS DES POLYGONES.
activedash = motif
Motif de la bordure quand le pointeur de la souris est sur l'élément (voir : Tutoriel de tkinter.Canvas ( )).
activefill = couleur
Couleur de l'élément quand le pointeur de la souris est sur lui.
activeoutline = couleur
Couleur de la bordure quand le pointeur de la souris est sur l'élément.
activeoutlinestipple = bitmap
Motif bitmap dessinant la bordure quand le pointeur de la souris est sur l'élément (voir : Tutoriel de tkinter.BitmapImage ( )).
activestipple = bitmap
Motif bitmap remplissant l'élément quand le pointeur de la souris est sur lui (voir : Tutoriel de tkinter.BitmapImage ( )).
activewidth = taille
Largeur de la bordure en pixel (1 par défaut) quand le pointeur de la souris est sur l'élément.
dash = motif
Motif du pointillées de la bordure de l'élément (voir : Tutoriel de tkinter.Canvas ( )).
dashoffset = ecart
Décalage de départ du motif de la bordure de l'élément (voir : Tutoriel de tkinter.Canvas ( )).
disableddash = motif
Motif de la bordure quand l'élément est désactivé (voir : Tutoriel de tkinter.Canvas ( )).
disabledfill = couleur
Couleur de l'élément quand il est désactivé.
disabledoutline = couleur
Couleur de la bordure quand l'élément est désactivé.
disabledoutlinestipple = bitmap
Motif bitmap dessinant la bordure quand l'élément est désactivé (voir : Tutoriel de tkinter.BitmapImage ( )).
disabledstipple = bitmap
Motif bitmap remplissant l'élément quand il est désactivé. Inactif si l'attribut disabledfill n'est pas définit.
disabledwidth = taille
Largeur de la bordure, en pixel, quand l'élément est désactivé.
fill = couleur
Couleur de l'élément (fill = "", transparent par défaut).
joinstyle = style
Définit le style de liaison entre les segments : "bevel" normal, "miter" pointue , "round" arrondie (voir : exemple 3).
offset = ecart
Décalage de départ entre les motifs de dégradé à l'intérieur de l'élément (voir : Tutoriel de tkinter.Canvas ( )).
outline = couleur
Couleur de la bordure de l'élément (outline = "black", noir par défaut).
outlineoffset = ecart
Ajuste le motif de dégradé de la bordure de l'élément (voir : Tutoriel de tkinter.Canvas ( )).
outlinestipple = bitmap
Motif bitmap dessinant la bordure de l'élément (voir : Tutoriel de tkinter.BitmapImage ( )).
smooth = style
Indique si les segments sont rectilignes, 0 par défaut, ou courbés, 1 (voir : exemple 2).
splinesteps = parties
Indique le nombre de divisions, de 1 à 12, utilisées entre 2 sommets quand smooth = 1 (voir : exemple 2).
state = etat
Définie l'état de l'élément : "normal" , "active" sous le pointeur, "disabled" désactivé, "hidden" invisible.
stipple = bitmap
Bitmap remplissant l'élément, Inactif si l'attribut fill n'est pas définit (voir : Tutoriel de tkinter.BitmapImage ( )).
tags = groupe
Liste des groupes auxquels appartient l'élément.
width = taille
Epaisseur de la ligne en pixel (1 par défaut).
EXEMPLE.
1. Création d'une figure complexe.
import tkinter
def FNC_Afficher ( ) :
kcoordonnees = [ int ( kelement ) for kelement in CAN_Toile.coords ( CAN_Figure ) ]
LAB_Sommets [ "text" ] = f"{ kcoordonnees }"
def FNC_Axes ( event ) :
kabscisse = ( SCA_Abscisse.get ( ) , 0 , SCA_Abscisse.get ( ) , 400 )
kordonnee = ( 0 , SCA_Ordonnee.get ( ) , 400 , SCA_Ordonnee.get ( ) )
CAN_Toile.coords ( CAN_Abscisse , *kabscisse )
CAN_Toile.coords ( CAN_Ordonnee , *kordonnee )
def FNC_Effacer ( ) :
CAN_Toile.coords ( CAN_Figure , -1 , -1 )
CAN_Toile.coords ( CAN_Ligne , -1 , -1 , -1 , -1 )
FNC_Afficher ( )
def FNC_Style ( ) :
kepaisseur= int ( SPI_Epaisseur.get ( ) )
CAN_Toile.itemconfig ( CAN_Figure , width = kepaisseur , fill = SPI_Couleurs.get ( ) , outline = SPI_Ligne.get ( ) )
CAN_Toile.itemconfig ( CAN_Ligne , width = kepaisseur , fill = SPI_Ligne.get ( ) )
def FNC_Tracer ( ) :
kcoordonnees = CAN_Toile.coords ( CAN_Figure )
if sum ( kcoordonnees ) < 0 :
kcoordonnees.clear ( )
kcoordonnees.extend ( [ SCA_Abscisse.get ( ) , SCA_Ordonnee.get ( ) ] )
CAN_Toile.coords ( CAN_Figure , *kcoordonnees )
FNC_Afficher ( )
return
kcoordonnees.extend ( [ SCA_Abscisse.get ( ) , SCA_Ordonnee.get ( ) ] )
CAN_Toile.coords ( CAN_Figure , *kcoordonnees )
if len ( kcoordonnees ) < 6 : CAN_Toile.coords ( CAN_Ligne , *kcoordonnees )
FNC_Afficher ( )
TKI_Principal = tkinter.Tk ( )
kcouleurs = ( "red" , "lime" , "yellow" , "blue" , "magenta" , "aqua" , "white" , "palegreen" , "orange" )
BUT_Quitter = tkinter.Button ( TKI_Principal , text = "Quitter" , command = TKI_Principal.destroy )
BUT_Tracer = tkinter.Button ( TKI_Principal , text = "Tracer" , command = FNC_Tracer )
BUT_Effacer = tkinter.Button ( TKI_Principal , text = "Effacer" , command = FNC_Effacer )
SCA_Abscisse = tkinter.Scale ( TKI_Principal , orient = "horizontal" , to = 399 , command = FNC_Axes )
SCA_Ordonnee = tkinter.Scale ( TKI_Principal , to = 399 , command = FNC_Axes )
SPI_Epaisseur = tkinter.Spinbox ( TKI_Principal , from_ = 0 , to = 25 , wrap = True , width = 12 , command = FNC_Style )
SPI_Couleurs = tkinter.Spinbox ( TKI_Principal , values = kcouleurs , wrap = True , width = 12 , command = FNC_Style )
SPI_Ligne = tkinter.Spinbox ( TKI_Principal , values = kcouleurs , wrap = True , width = 12 , command = FNC_Style )
LAB_Sommets = tkinter.Label ( TKI_Principal , relief = "ridge" , wraplength = 400 )
CAN_Toile = tkinter.Canvas ( TKI_Principal , bg = "palegreen" , height = 400 , width = 400 )
CAN_Abscisse = CAN_Toile.create_line ( 0 , 0 , 0 , 0 )
CAN_Ordonnee = CAN_Toile.create_line ( 0 , 0 , 0 , 0 )
CAN_Figure = CAN_Toile.create_polygon ( -1 , -1 , -1 , -1 , -1 , -1 )
CAN_Ligne = CAN_Toile.create_line ( -1 , -1 , -1 , -1 )
SCA_Ordonnee.grid ( row = 0 , column = 0 , sticky = "nesw" )
CAN_Toile.grid ( row = 0 , column = 1 , columnspan = 6 , sticky = "nesw" )
SCA_Abscisse.grid ( row = 1 , column = 1 , columnspan = 6 , sticky = "nesw" )
LAB_Sommets.grid ( row = 2 , column = 1 , columnspan = 6 , sticky = "nesw" )
BUT_Tracer.grid ( row = 3 , column = 1 , sticky = "nesw" )
BUT_Effacer.grid ( row = 3 , column = 2 , sticky = "nesw" )
SPI_Couleurs.grid ( row = 3 , column = 3 , sticky = "nesw" )
SPI_Epaisseur.grid ( row = 4 , column = 1 , sticky = "nesw" )
SPI_Ligne.grid ( row = 4 , column = 2 , sticky = "nesw" )
BUT_Quitter.grid ( row = 4 , column = 3 , sticky = "nesw" )
SCA_Abscisse.set ( 200 )
SCA_Ordonnee.set ( 200 )
FNC_Style ( )
TKI_Principal.mainloop ( )
2. Segmentation manuelle ou automatique d'une figure.
L'attribut smooth indique si la figure est constituée de segments avec smooth = True ou non avec smooth = False.
Quand smooth = True, tkinter recherche le milieux des côtés définit par les sommets données par le scripts pour dessiner la figure, et l'attribut splineteps = nombre indique, alors, le nombre de segments partant des moyennes des cotés utilisés pour tracer cette figure. nombre doit être un int ( ) entre 1 et 12.
Quand smooth = False, la ligne passe par tous les sommets intermédiaires qui sont présents dans sa définition, et l'attribut splineteps = nombre est ignoré,
import tkinter
def FNC_Courbe ( *event ) :
CAN_Zone.itemconfig ( 2 , splinesteps = SCA_Partie.get ( ) , smooth = TKV_Courbe.get ( ) )
TKI_Principal = tkinter.Tk ( )
TKV_Courbe = tkinter.BooleanVar ( )
BUT_Quitter = tkinter.Button ( TKI_Principal , text = "Quitter" , command = TKI_Principal.destroy )
CKB_Courbe = tkinter.Checkbutton ( TKI_Principal , variable = TKV_Courbe , text = "Courber" , command = FNC_Courbe )
SCA_Partie = tkinter.Scale ( TKI_Principal , orient = "horizontal" , from_ = 1 , to = 12 , length = 300 , command = FNC_Courbe )
CAN_Zone = tkinter.Canvas ( TKI_Principal , bg = "palegreen" , height = 300 , width = 400 )
CAN_Zone.create_polygon ( 10 , 10 , 350 , 50 , 390 , 290 , 220 , 130 , 50 , 250 , width = 2 , fill = "" , outline = "white" )
CAN_Zone.create_polygon ( 10 , 10 , 350 , 50 , 390 , 290 , 220 , 130 , 50 , 250 , width = 7 , fill = "" , outline = "black" )
CAN_Zone.grid ( row = 0 , column = 0 , columnspan = 2 , sticky = "nesw" )
CKB_Courbe.grid ( row = 1 , column = 0 , pady = 25 , sticky = "sw" )
SCA_Partie.grid ( row = 1 , column = 1 , pady = 25 , sticky = "sew" )
BUT_Quitter.grid ( row = 2 , column = 0 , columnspan = 2 , sticky = "nesw" )
TKV_Courbe.set ( False )
TKI_Principal.mainloop ( )
Votre aide est précieuse pour améliorer ce site, alors n'hésitez pas à faire part de