Un canevas est une zone rectangulaire destinée à contenir des dessins ou d’autres figures complexes. Vous pouvez y placer des graphiques, du texte, des composants graphiques (widgets) ou des cadres (frames). Veuillez consulter les sections suivantes pour les méthodes qui servent à créer de tels objet sur un canevas:
Pour créer un objet de type Canvas:
Le constructeur retourne le nouveau widget canvas. Ses options sont:
Paramètres: |
|
---|
Parce qu’un canevas peut être plus large que sa fenêtre de visualisation et qu’il peut être équipé de barres de défilement afin de le déplacer, il y a deux systèmes de coordonnées pour chaque canevas:
La liste d’affichage se réfère à la séquence de tous les items qui se trouvent sur le canevas, de l’arrière plan, (background - le bas de la liste d’affichage) vers l’avant plan, (foreground - le haut de cette liste).
Si deux items se recouvrent, l’item au-dessus de l’autre dans la liste d’affichage désigne celui qui est le plus proche de l’avant plan, c’est à dire qui est vu comme au-dessus de l’autre sur l’affichage. Par défaut, lorsqu’un item est créé, il est placé tout en haut de la liste d’affichage (et donc il apparaît au dessus des items déjà affichés), mais il est possible de ré-ordonner la liste d’affichage.
Chaque item affiché sur le canevas possède un identifiant numérique (simple entier) unique, il s’agit de la valeur retournée par le «constructeur» - create_*() - lors de sa création.
Une marque, tag, est une chaîne de caractères qu’on peut associer à un ou plusieurs items du canevas.
Les marques, tags, ont de nombreux usages. Par exemple, si vous dessinez une carte sur un canevas et que vous utilisez des textes pour donner le nom des rivières, vous pourriez marquer tous ces items textuels avec 'rivEtiq'. Cela vous permettrait d’agir globalement sur les étiquettes en utilisant cette marque afin, par exemple, de changer leur couleur ou de les supprimer.
Un argument tagOrId se réfère à un ou plusieurs items du canevas.
Tous les Canevas disposent de ces méthodes (outre celles qui servent à créer des items et qui sont présentées plus loin):
Appose une nouvelle marque newTag à l’item situé juste au-dessus de celui qui est sélectionné par tagOrId dans la liste d’affichage. L’argument newTag, donné sous la forme d’une chaîne de caractère, est la marque qu’on souhaite apposer.
Attache la marque donnée à tous les items qui sont présents sur le canevas.
Attache la nouvelle marque newTag à tous les items situés en-dessous de celui qui est indiqué par l’identifiant numérique ou la marque tagOrId. L’argument newTag est une chaîne de caractères.
Ajoute une marque à l’item le plus proche de la position indiquée par les coordonnées (de la fenêtre de vue). Si un ou plusieurs items sont à la même distance, celui qui est le plus haut dans la liste d’affichage (qui recouvre les autres) est sélectionné. Utilisez l’argument halo afin d’augmenter la taille effective du point. Par exemple, une valeur de 5 indique le traitement de tous les objets qui recouvrent le disque de centre (x, y).
Si l’identifiant d’un objet est utilisé pour l’argument start, cette méthode marque l’item qui est le plus haut dans la liste d’affichage tout en étant en dessous de celui qui est ainsi identifié.
Ajoute la marque newTag à tous les items qui sont complètement recouvert par le rectangle dont le coin supérieur gauche est (x1, y1) et le coin inférieur droit est (x2, y2).
Comme la méthode précédente à cela près que les items marqués sont tous ceux qui ont au moins un point commun avec le rectangle.
Ajoute la marque newTag à ou aux objets identifiés par tagOrId.
Retourne un tuple (x1, y1, x2, y2) qui décrit un rectangle qui renferme tous les objets identifiés par tagOrId. Si l’argument n’est pas précisé, le rectangle retourné est le plus petit qui contient tous les items présents dans le canevas. Le coin supérieur gauche du rectangle est (x1, y1) et son coin inférieur droit est (x2, y2).
Retourne la coordonnée x du canevas qui correspond à la coordonnée x d’affichage précisée par screenx. Si l’argument gridspacing est précisé, la valeur de x relative au canevas est arrondi au plus proche multiple de cette valeur.
Similaire à la méthode précédente mais pour y.
Si vous précisez uniquement l’argument tagOrId, elle retourne un tuple contenant les coordonnées du plus bas ou de l’unique item précisé par cet argument. Le nombre des coordonnées dépend du type d’item. Dans la plupart des cas, il est de la forme (x1, y1, x2, y2) décrivant la boîte englobante (bounding box) de l’item.
Vous pouvez déplacer un item en précisant ses nouvelles coordonnées.
Supprime des caractères du ou des items textuels sélectionnés. Tous les caractères situés entre first et last (inclus) sont supprimés, ces paramètres indiquant une position entière ou la fin du texte via la chaîne 'end'. Par exemple, pour un canevas C et un item de marque 'I', C.dchars('I', 1, 1) supprime le second caractère.
Supprime le ou les items indiqués par tagOrId. Il n’y a pas d’erreurs si aucun item ne correspond à tagOrId.
Supprime la marque tagToDelete du ou des items sélectionnés par tagOrId.
Retourne l’identifiant numérique de l’item situé juste au dessus de celui qui est sélectionné par tagOrId. S’il y en a plusieurs, on utilise le plus haut dans la liste d’affichage. Si l’item précisé par tagOrId est le plus haut, la méthode returne un tuple vide ().
Retourne une liste qui contient tous les identifiants numériques de tous les items du canevas, du plus bas au plus haut.
Retourne l’identifiant numérique de l’item situé juste en dessous de celui qui est sélectionné par tagOrId. Si plusieurs items correspondent, on obtient le plus bas dans la liste d’affichage. Si l’item sélectionné par tagOrId est le plus bas, la méthode retourne un tuple vide ().
Retourne un tuple contenant l’identifiant numérique d’un seul item, celui qui est le plus proche du point (x, y). Si plusieurs items sont sélectionnés, c’est celui qui est le plus haut dans la liste d’affichage. Si aucun item n’est sélectionné, retourne une liste vide. Utiliser l’argument halo afin d’augmenter la taille effective du point. Tout item situé à une distance inférieur à halo de (x, y) le coupe. Si start est renseigné, en utilisant une marque ou un identifiant (la marque sélectionne l’item le plus bas), l’item le plus proche et situé en-dessous de start est choisi.
Retourne la liste des identifiants numériques des items situés entièrement à l’intérieur du rectangle déterminé par (x1, y1) (coin supérieur gauche) et (x2, y2) (coin inférieur droit).
Similaire à la méthode précédente, mais sélectionne tous les items qui ont au moins un point commun avec le rectangle.
Retourne la liste des identifiants numériques des items sélectionnés par tagOrId.
Donne le focus à l’item sélectionné par tagOrId. Si plusieurs sont sélectionnés, donne le focus au premier de la liste d’affichage qui permet un curseur d’insertion. Si aucun item ne satisfait cette condition ou si le canevas n’a pas le focus, le focus n’est pas modifié. Si l’argument est omis, l’identifiant de l’item qui a le focus est retourné ou '' si aucun ne l’a.
Si tagOrId est un identifant numérique, elle retourne la liste de toutes les marques qui sont associées à cet item. Si c’est une marque, elle retourne la liste de toutes les marques de l’item le plus bas parmi ceux qui sont sélectionnés.
En supposant que l’item sélectionné permette l’insertion de texte et qu’il possède le focus, positionne le curseur d’insertion à la position index laquelle est soit un entier ou la chaîne 'end'. N’a pas d’effet autrement.
Retourne l’index (entier) du specifier donné dans l’item textuel sélectionné par tagOrId (le plus bas s’il y en a plusieurs). La valeur de retour est une position dans une chaîne qui suit les convention de Python, 0 signifie avant le premier caractère. L’argument specifier peut être :
Insère la chaîne de caractères text dans le ou les items sélectionné par tagOrId, à la position déterminée par beforeThis: 'insert', 'end', 'sel.first' et 'sel.last' ou un entier (index) ou '@x,y' (x et y à remplacer par des entiers).
Retourne la valeur de l’option de configuration (précisée par une chaîne de caractères) pour l’item sélectionné (ou pour l’item le plus bas si plusieurs sont sélectionnés par tagOrId. C’est très similaire à la méthode cget() pour les widgets.
Si aucune option n’est indiquée, retourne un dictionnaire dont les clés sont les options possibles pour l’item donné par tagOrId (ou le plus bas s’il y en a plusieurs). Autrement, modifie la ou les options données sous la forme option=valeur.
Déplace les items donnés via tagOrId en ajoutant dx à leurs coordonnées x et dy à leurs coordonnées y.
Mise à l’échelle de tous les objets relativement au point de référence P=(x, y). Les facteurs d’échelle sx et sy sont basés sur une valeur de 1.0 qui signifie aucune mise à l’échelle. Chaque point des items sélectionnés est déplacé de façon que leurs distances en x (resp. en y) au point P sont multipliées par sx (resp. sy). Cette méthode ne modifie pas la taille des textes mais peut les déplacer.
Sert à faire défiler le canevas. voir la méthode scan_mark().
Cette méthode sert à réaliser des défilement rapide du canevas. L’intention est que l’utilisateur puisse faire défiler le canevas par cliquer-glisser c’est à dire en appuyant sur un bouton de la souris (sans relâcher) et en la déplaçant jusqu’au relâchement. Pour réaliser cette fonctionnalité, lier l’événement souris «bouton appuyé» à un gestionnaire qui appelle cette méthode en positionnant x et y à la position de la souris. Ensuite, lier l’événement '<Motion>' à un gestionnaire qui, en supposant que le bouton de la souris n’est pas relâché, appelle scan_dragto(x, y, gain)() en positionnant x et y aux coordonnées de la souris ; le paramètre gain sert à contrôler le rythme du défilement, sa valeur par défaut est 10.0. Utiliser une valeur plus grande pour accélérer le défilement.
Trouve l’extrémité de la selection courante la plus proche du caractère donné par index et l’ajuste de façon que la nouvelle sélection contienne ce caractère. L’autre extrémité de la sélection devient le point d’ancrage pour une utilisation ultérieure de select_to(). Si il n’y avait aucune sélection, se comporte comme la méthode select_to().
Pour les valeurs possible de index, voir insert().
Supprime la sélection courante (pas ce qui est sélectionné) si elle existe, autrement ne fait rien.
Positionne le point d’ancrage de la sélection juste avant le caractère précisé par index dans le texte de l’item donné par tagOrId. Cette méthode ne modifie pas une sélection existante, elle positionne simplement la marque de fin de sélection pour l’utilisation ultérieur de select_to().
S’il y a une sélection de texte dans ce canevas, retourne l’identiant de l’item texte qui contient la sélection. Sinon, retourne None.
Positionne la sélection afin qu’elle inclut tous les caractères compris entre l’ancre de la sélection et index. La nouvelle sélection contient le caractère à la position index. Elle contient le caractère associé à l’ancre de sélection seulement si index est supérieur ou égal au point d’ancrage de la sélection. Le point d’ancrage de la sélection est déterminé par la dernière utilisation des méthodes select_adjust() ou select_from(). Si le point d’ancrage de la sélection n’est pas positionné, il est placé à la position index.
Lie le gestionnaire d’événement gestionnaire, pour l’évenement précisé par chevt, à ou aux items tagOrId. Si l’argument add est une chaîne qui commence par '+', cette liaison est ajoutée à celles qui ont déjà pu être définies pour cet événement. Autrement, les liaisons précédement définies sont remplacées par celle-ci. Pour plus d’informations, voir Événements: répondre aux actions de l’utilisateur.. Notez que la liaison aux items n’est pas supprimée par le retrait d’une marque (ni ajoutée en cas de nouveau marquage).
Déplace les items tagOrId juste en-dessous du premier ou seul item indiqué par belowThis. S’il y en a plusieurs, leur ordre relatif n’est pas modifié. Cette méthode ne s’applique pas aux items fenêtre, window.
Déplace les items sélectionnés par tagOrId juste au-dessus du premier ou seul item sélectionné par aboveThis. S’il y en a plusieurs, leur ordre relatif n’est pas modifié. Cette méthode ne s’applique pas aux items fenêtre, window.
Supprime la liaison entre le ou les items tagOrId et le gestionnaire gestId pour la chaîne d’événement chEvt. Voir Événements: répondre aux actions de l’utilisateur..
Retourne le type du premier ou seul item sélectionné par tagOrdId. La valeur de retour est l’une des chaînes suivante : 'arc', 'bitmap', 'image', 'line', 'oval', 'polygon', 'rectangle', 'text', or 'window'.
Cette méthode fait défiler le canevas relativement à sa fenêtre de vue. L’intention est de faire une liaison avec l’option command d’une barre de défilement qui aurait été associée à ce canevas. Le défilement est horizontal jusqu’à une position entre 0 et 1 (argument fraction): 0.0 pour sa position la plus à gauche et 1.0 pour sa position la plus à droite.
Cette méthode fait défiler le canevas à gauche ou à droite. L’argument what précise le défilement qui peut être soit 'units' soit 'pages', n précise le nombre d’unité du déplacement (vers la droite si positif, vers la gauche autrement). 'units' se réfère à l’option xscrollincrement (voir Scrollbar - Barres de défilement). Pour 'pages', n est multiplié par 90% de la largeur de la page.
Même chose que xview_moveto mais verticalement.
Même chose que xview_scroll mais verticalement.
Un arc, dans sa forme générale, est une portion d’ellipse. Une ellipse tout entière ou un cercle forment des cas particuliers. Reportez-vous à Les ellipses et cercles pour en savoir plus sur la géométrie des ellipses dessinées.
Pour créer un arc sur un canvas, utiliser :
Le constructeur retourne l’identifiant numérique du nouvel arc créé.
Le point (x0, y0) est le coin supérieur gauche et (x1, y1) le coin inférieur droit du rectangle dans lequel s’inscrit l’ellipse. Si le rectangle est un carré, vous obtenez un (arc) de cercle.
Les options possibles sont:
Paramètres: |
|
---|
extrait de code utilisé:
can = Canvas(root, width=w, height=h, bg="black")
#...
img = PhotoImage(file='zelda.ppm')
can.create_image(w/2, h/2, image=img)
#...
Pour afficher une image sur un canevas, utiliser:
Retourne l’identifiant numérique de l’item image créé sur le canevas appelant.
L’image est positionnée relativement au point (x, y). Ces options sont :
Paramètres: |
|
---|
En général, une ligne est une succession de segments connectés les uns aux autres. Pour créer une ligne, utiliser:
La ligne est formée de segments qui joignent les points (x0, y0), (x1, y1), … (xn, yn). Les options possibles sont :
Paramètres: |
|
---|
Pour créer l’ellipse (ou le cercle) qui s’inscrit dans le rectangle (ou le carré) (x0, y0), (x1, y1) où les premières coordonnées sont celles du coin supérieur gauche et les secondes celles du coin inférieur droit, utiliser:
Retourne l’identifiant numérique de l’ellipse créée. Les options sont:
Paramètres: |
|
---|
Extrait de code:
can = Canvas(root, width=w, height=h, bg="black")
can.pack()
e=10
pts = [(e,h/2),(w/2,h-e),(w-e,h/2),(w/2,e)]
can.create_polygon(pts, dash=(4, 2), fill="magenta", outline="yellow", width=3)
Un polygone est une ligne fermée. Ainsi, il possède une ligne de contour (formée de segments) et une zone intérieure. Pour le définir, on utilise une série de points [(x0, y0), (x1, y1), … (xn, yn)]. Le premier point et le dernier sont reliés par un segment afin de le fermer. Pour créer un polygone, utiliser:
Retourne l’identifiant numérique du polygone créé. Ses options sont:
Paramètres: |
|
---|
Un rectangle est défini par deux points : (x0, y0) pour son coin supérieur gauche et (x1, y1) pour son coin inférieur droit.
Par exemple, un rectangle dont le coin supérieur gauche est (100,100) et le coin inférieur droit est (102,102) est un carré de deux pixels par deux pixels qui inclut le pixel (101,101) mais pas le pixel (102,102).
Les rectangles sont formés de deux parties:
Les bords haut et gauche de la ligne de bordure font partie du rectangle mais pas les bords bas et droit. Par défaut cette bordure est noire et a une épaisseur de 1 pixel.
Par exemple, considérons le rectangle dont le coin supérieur gauche est (10,10) et le coin inférieur droit est (11,11). Si vous annulez la bordure (width=0) et utilisez une couleur de remplissage verte (fill='green'), vous obtenez un pixel vert à la position (10, 10). Cependant, dans les même conditions, si vous laissez par défaut la valeur de width, vous obtenez quatre pixels noirs aux positions (10,10), (10,11), (11,10), et (11,11).
L’intérieur du rectangle est la zone délimitée par la ligne de bordure. par défaut, il est transparent.
Pour créer un rectangle sur le canevas:
Retourne l’identifiant numérique du rectangle créé. Ses options sont:
Paramètres: |
|
---|
Vous pouvez afficher une ou plusieurs lignes de texte sur un canevas en utilisant:
Retourne l’identifiant numérique de l’objet textuel ainsi créé. Ses options sont:
Paramètres: |
|
---|
Vous pouvez modifier ou récupérer le texte affiché:
Plusieurs méthodes des canevas vous permettent d’autres manipulations du texte. Voir Méthodes des Canevas, et plus particulièrement dchars(), focus(), icursor(), index(), et insert().
Il est possible de placer n’importe quel widget de tkinter sur un canevas en utilisant un item fenêtre. Une fenêtre est une zone rectangulaire qui peut contenir un widget de tkinter. Le widget doit être un enfant de la même fenêtre principale que le canevas, ou l’enfant d’un widget lui-même situé dans cette fenêtre principale.
Si vous voulez insérer un objet composé de plusieurs widgets sur un canevas, vous pouvez utiliser cette méthode pour placer un cadre (frame) dans le canevas et, ensuite, placer d’autres widgets dans ce cadre.
Pour créer une fenêtre dans un canevas, utiliser:
Retourne l’identifiant numérique de la fenêtre créée. Ses options sont:
Paramètres: |
|
---|