Avant d’examiner les widgets disponibles, prenons le temps d’observer comment certains de leurs attributs communs - comme les tailles, les couleurs et les polices de caractères (fontes) - sont précisés.
Les différentes dimensions comme la largeur (width), la hauteur (height), etc. peuvent être précisées dans différentes unités.
Si vous indiquez une dimension par un entier, elle est supposée être en pixels.
Vous pouvez préciser une unité en utilisant une chaîne de caractères qui contient un nombre suivi d’une unité :
- c : Centimètres
- i : Pousses (Inches)
- m : Millimètres
- p : Points d’impression
Comme dans la plupart des systèmes d’affichage, l’origine de chaque système de coordonnées est située à son coin supérieur gauche, les valeurs de x augmentant vers la droite et les valeurs de y augmentant vers le bas.
L’unité de base est le pixel avec le coin supérieur gauche de coordonnées (0,0). Les coordonnées indiquées par un entier sont toujours exprimées en pixels, mais chaque coordonnée peut être indiquée via une chaîne de caractères dans une unité particulière; voir Les dimensions.
Il y a deux manières générales pour indiquer une couleur dans tkinter.
Vous pouvez utiliser une chaîne de caractères qui précise la proportion de rouge (red), vert (green) et bleu (blue) en hexadécimal:
- #rgb : quatre bits par couleur
- #rrggbb : huit bits par couleur
- #rrrgggbbb: douze bits par couleur
Par exemple, #fff est blanc, #000000 est noir, #000fff000 est un vert pur et #00ffff est un cyan pur (vert plus bleu).
Vous pouvez aussi utiliser n’importe quelle couleur définie localement par son nom standard. Les couleurs 'white', 'black', 'red', 'green', 'blue', 'cyan', 'yellow', and 'magenta' seront toujours disponibles. D’autres noms peuvent fonctionner selon la configuration de votre ordinateur.
Selon votre système d’exploitation, il peut y avoir jusqu’à trois façons d’indiquer un type de fonte.
Comme un tuple dont le premier élément est la famille de la fonte, suivi par une taille (en point si positif, en pixel si négatif), optionnellement suivi par une chaîne contenant un ou plusieurs modificateurs de style comme bold, italic, underline et overstrike.
Exemples : ('Helvetica', '16') pour une police Helvetica régulière de 16 points; ('Times', '24', 'bold italic') pour une police Times de 16 points en gras italique; Pour une police Times en gras de 20 pixels, utilisez ('Times', -20, 'bold').
Vous pouvez créer un «objet fonte» en important le sous-module tkinter.font et en utilisant le constructeur Font:
import tkinter.font as tkFont # ou «import TkFont» pour python 2 #.... font = tkFont.Font(option, ...)où les options sont :
- family : la famille de fonte via une chaîne de caractères.
- size : la taille de fonte en points via un entier. Pour obtenir une taille de n pixels, utiliser -n.
- weight : 'bold' pour gras, 'normal' pour un rendu normal.
- slant : 'italic' pour italique, 'roman' pour un rendu normal.
- underline : 1 pour le soulignement, 0 pour un rendu normal.
- overstrike : 1 pour barrer, 0 pour un rendu normal.
Par exemple, pour obtenir une fonte Helvetica de 36 points en gras italique:
helv36 = tkFont.Font(family='Helvetica', size=36, weight='bold')
Si vous utilisez le système X Window, vous pouvez utiliser n’importe quel nom de fonte X. Par exemple, la fonte nommée '-*-lucidatypewriter-medium-r-*-*-*-140-*-*-*-*-*-*' est une bonne fonte à chasse fixe pour l’affichage à l’écran. Utilisez le programme xfontsel pour vous aider à choisir une fonte plaisante.
Pour obtenir la liste de toutes les familles de polices disponibles dans votre environnement, appelez cette fonction:
tkFont.families()
La valeur de retour est une liste de chaînes. Notez qu’il est nécessaire de créer votre fenêtre principale avant d’appeler cette fonction.
Les méthodes qui suivent sont disponibles pour n’importe quel objet de type Font.
Si vous ne fournissez aucun argument, vous obtenez un dictionnaire des options courantes de la fonte qui peuvent être différentes de celles que vous avez demandées. Pour obtenir la valeur actuelle d’une option, fournissez son nom comme argument.
Retourne la valeur de l’option indiquée sous la forme d’une chaîne de caractères.
Utilisez cette méthode pour modifier une ou plusieurs options d’une fonte. Par exemple, si vous disposez d’un objet Font nommé titres et que vous appelez titres.configure(family='times', size=18), cette fonte sera modifiée conformément ainsi que tout widget qui l’utilise.
Retourne une copie de l’objet Font appelant.
Passez à cette méthode une chaîne de caractères et elle vous retournera le nombre de pixels en largeur que cette chaîne occuperait avec la fonte appelante. Attention: certains caractères penchés peuvent déborder de cette zone.
Si vous appelez cette méthode sans argument, elle retourne un dictionnaire qui contient toutes les métriques de la fonte. Vous pouvez récupérer la valeur d’une métrique particulière en la fournissant en argument.
Paramètres: |
|
---|
Le module Tkinter définit un certain nombre de constantes d’ancrages que vous pouvez utiliser pour contrôler l’endroit où un widget est positionné relativement à son contexte. Par exemple, les ancrages peuvent préciser l’endroit où un widget est situé à l’intérieur d’un cadre (Frame) lorsque celui-ci est plus grand que le widget.
Ces constantes sont données comme sur une boussole où le nord est en haut et l’ouest à gauche. Nous prions les lecteurs de l’hémisphère sud de nous pardonner ce chauvinisme du nord.
Les constantes d’ancrages sont montrées ci-dessous:
Par exemple, si vous créez un petit widget dans un large cadre et utilisez l’option anchor='se', le widget sera placé au niveau du bord inférieur droit du cadre. Si vous utilisez anchor='n', il sera centré sur le bord haut du cadre.
Les ancres sont aussi utilisées pour préciser où positionner un texte relativement à un point de référence. Par exemple, si on utilise 'center' comme une ancre pour un texte, il est centré horizontalement et verticalement autour du point de référence. L’ancre 'nw' le positionnerait de telle sorte que le point de référence coïncide avec le coin nord ouest de la boîte qui contient le texte. L’ancre 'w' le centrerait verticalement avec le bord gauche de la boîte du texte sur le point et ainsi de suite.
Le style de relief d’un widget se réfère à la simulation de certains effets 3D autour de l’extérieur du widget. Voici les différentes possibilités :
Les valeurs peuvent être précisées par des chaînes de caractères comme 'raised', 'sunken', 'flat' ...
La largeur des bords dépend de l’option borderwidth du widget. Ici, cette largeur a été fixée à 5 pixels alors que par défaut elle vaut 2 pixels.
Pour les options bitmap des widgets, les bitmaps représentés ci-dessous sont toujours disponibles :
L’image montre des widget boutons qui portent les bitmaps standards.
De la gauche vers la droite, il y a 'error', 'gray75', 'gray50', 'gray25', 'gray12', 'hourglass', 'info', 'questhead', 'question', et 'warning'.
Vous pouvez utiliser vos propres bitmaps. N’importe quel fichier d’extension .xbm de format «X bit map» fonctionnera. À la place du nom standard des bitmaps, utilisez une chaîne '@' suivi du chemin du fichier .xbm.
Il y a un grand nombre de pointeurs de souris disponibles. Leurs noms et le graphique associé sont indiqués ci-dessous. Le dessin exact peut varier d’un système à l’autre.
arrow ; man
; based_arrow_down
; middlebutton
;
based_arrow_up
; mouse
; boat
; pencil
;
bogosity
; pirate
; bottom_left_corner
; plus
;
bottom_right_corner
; question_arrow
; bottom_side
; right_ptr
;
bottom_tee
; right_side
; box_spiral
; right_tee
;
center_ptr
; rightbutton
; circle
; rtl_logo
;
clock
; sailboat
; coffee_mug
; sb_down_arrow
;
cross
; sb_h_double_arrow
; cross_reverse
; sb_left_arrow
;
crosshair
; sb_right_arrow
; diamond_cross
; sb_up_arrow
;
dot
; sb_v_double_arrow
; dotbox
; shuttle
;
double_arrow
; sizing
; draft_large
; spider
;
draft_small
; spraycan
; draped_box
; star
;
exchange
; target
; fleur
; tcross
;
gobbler
; top_left_arrow
; gumby
; top_left_corner
;
hand1
; top_right_corner
; hand2
; top_side
;
heart
; top_tee
; icon
; trek
;
iron_cross
; ul_angle
; left_ptr
; umbrella
;
left_side
; ur_angle
; left_tee
; watch
;
leftbutton
; xterm
; ll_angle
; X_cursor
;
lr_angle
Il y a trois méthodes générales pour afficher des images dans votre application tkinter.
Pour afficher un bitmap dans le format .xbm vous aurez besoin de ce constructeur:
BitmapImage(file=f, background=b, foreground=c)
où f est le nom du fichier image .xbm.
Normalement, le bit d’avant plan foreground (1) est affiché en noir et le le bit d’arrière-plan background (0) sera transparent. Pour modifier ce comportement, utilisez l’option background=b pour régler la couleur à b, et l’option foreground=c pour régler la couleur à c. Pour les spécifications de couleurs, Les couleurs.
Ce constructeur retourne une valeur qui peut être utilisée à n’importe quel endroit où tkinter attend une image. Par exemple, pour afficher une image comme une étiquette, utiliser un widget Label (voir Label - Étiquettes) et fournissez l’objet BitmapImage comme valeur à son option image:
logo = BitmapImage('logo.xbm', foreground='red')
Label(image=logo).grid()
Pour afficher une image du type .gif, .pgm ou .ppm, vous aurez besoin du constructeur:
PhotoImage(file=f)
où f est le nom d’un fichier image. Le constructeur retourne une valeur qui peut être utilisée partout où tkinter attend une image. Notez qu’il est nécessaire de conserver une référence vers cette valeur:
logo = PhotoImage(file='test.gif') # ne pas supprimer cette référence
Label(image=logo).grid()
# Label(image=PhotoImage(file='test.gif')) ne fonctionnera pas !
Une chaîne de géométrie est un moyen standard de décrire à la fois la taille et la localisation d’une fenêtre principale sur l’écran du bureau.
Une chaîne de géométrie a la forme générale:
'wxh±x±y'
où :
Par exemple, une fenêtre crée avec geometry='120x50-0+20' aura une largeur de 120 pixels, une hauteur de 50 pixels, son bord droit sera collé à celui du bureau à 20 pixels du haut de celui-ci.
Le terme fenêtre (window) se rapporte à une zone rectangulaire du bureau.
tkinter nomme toutes ces fenêtres en utilisant un nommage «hiérarchique» :
Pour obtenir le nom d’un widget w, utilisez str(w).
Voir aussi Méthodes communes à tous les widgets pour les méthodes que vous pouvez utiliser afin d’agir sur les noms de fenêtre, plus spécialement les méthodes winfo_name(), winfo_parent(), et winfo_pathname().
Pour obtenir des dessins plaisants, il est parfois bon de s’intéresser au style des extrémités et des jointures.
le style des extrémités (cap style) d’une ligne permet de contrôler la forme de ses terminaisons. Les styles possibles sont :
- 'butt' : la fin d’une ligne est coupée perpendiculairement par une ligne qui passe par le point final.
- 'projecting' : La fin d’une ligne est coupée perpendiculairement par une ligne qui dépasse le point final de la moitié de la largeur de la ligne.
- 'round' : la fin est réalisée avec un demi-cercle centré sur le point final.
Le style de jointure (join style) décrit la forme que prend le lieu où deux lignes se rejoignent:
- 'rond' : la jointure est réalisée avec un cercle centré au point de jointure.
- 'bevel' : Une ligne droite est dessinée avec un angle intermédiaire entre les angles des lignes adjacentes.
- 'mitter' : Les côtés des lignes adjacentes sont poursuivies jusqu’à ce qu’elles se rencontrent en un point.
La figure suivante illustre ces styles. Les points rouges montrent la localisation des points qui définissent les lignes.
Bon nombre de widgets vous permettent d’indiquer un motif brisé pour dessiner leur ligne de contour (outline). Les options dash et dashoffset vous donnent un contrôle fin sur le motif exact qui sera dessiné.
dash
Cette option est renseignée avec un tuple d’entiers. Le premier entier précise combien de pixels doivent être tracés. Le second précise combien de pixels doivent être «sautés» avant de recommencer le tracé et ainsi de suite. Lorsque tous les entiers du tuple ont été utilisés, ils sont réutilisés dans le même ordre jusqu’à ce que la bordure soit complète.
Par exemple, l’option dash=(3, 5) produit une ligne où le parties tracées font 3 pixels et où les parties vides en font 5. dash=(7, 1, 1, 1) produirait un motif de base où les partie tracées mesureraient 7 puis 1 pixels séparés par des parties vides de 1 pixel. dash=(5,) produirait une alternance 5 pixels tracés, 5 pixels vides.
dashoffset
Pour démarrer le motif brisé en un point différent du cycle c’est à dire qui ne soit pas le point de départ, utiliser une option dashoffset=n où n est un nombre de pixels à sauter avant le démarrage du motif.
Par exemple, dash=(5, 1, 2, 1) en combinaison avec dashoffset=3 produirait: tracé 2, vide 1, tracé 2, vide 1 puis ensuite, tracé 5, vide 1, tracé 2, vide 1 et ainsi de suite :
À faire ...