Utilisation de fenêtres et de graphismes
Premiers pas avec tkinter
Pour créer des fenêtres graphiques, on utilise le module tkinter de python.
Il faut que l’une des premières lignes du script contienne l’instruction d’importation :
from tkinter import *
On considère le script suivant:
from tkinter import *
fenetre = Tk() #on peut choisir le nom que l'on veut pour la fenêtre
tex1 = Label(fenetre, text='Bonjour tout le monde !', fg='red') #création du texte
tex1.pack() #insertion du texte dans la fenêtre
fenetre.mainloop() #lancement de la boucle principale
Exécuter ce script.
Ce script permet d'ouvrir une fenêtre graphique dans laquelle y est inséré un widget(objet graphique), ici un bout de texte.
Il existe d'autres widgets: boutons, canvas, etc...
Les canvas
Un canvas (toile, tableau en français) est un espace dans lequel on peut dessiner ou écrire ce qu'on veut.
On considère le script suivant:
from tkinter import*
fenetre = Tk()
canvas = Canvas(fenetre, width=150, height=120, background='yellow')
ligne1 = canvas.create_line(0, 0, 150, 120)
ligne2 = canvas.create_line(0,120, 150,0)
txt = canvas.create_text(75, 60, text="diagonales", font="Arial 16 italic", fill="blue")
canvas.pack()
fenetre.mainloop()
Exécuter ce script.
La méthode .create_line(x0,y0,x1,x1)
permet de tracer une droite par les points de coordonnées (x0,x0)et(x1,y1) dans un canvas.
Quelques propriétés de l'objet Canvas
Les propriétés sont définies en paramètre lors de la construction de l'objet
- height : Hauteur Y du canvas
- width : Largeur X du canvas
- bg : Couleur de fond du canvas
- bd : Taille en pixels du bord du canvas (2 par défaut)
- relief : Style de la bordure (flat (par défaut),raised,sunken,groove,ridge)
Quelques méthodes du widget Canvas
- .create_arc(): Pour créer un arc de cercle
- .create_bitmap(): Image bitmap
- .create_image(): Image graphique
- .create_line(): Pour créer une ligne
- .create_oval(): Pour créer un cercle ou une ellipse
- .create_polygon(): Pour créer un polygone
- .create_rectangle(): Pour créer un rectangle
- .create_text(): Texte
- .create_window(): Une fenêtre rectangulaire
On peut trouver plus d'informations sur les widgets sur ce site. (ici la création de rectangle et les options)
Exercices
-
Dans un canvas de 150 pixels sur 120 pixels, réaliser le drapeau français.
-
Dans un canvas de 150 pixels sur 120 pixels, réaliser le drapeau de l'allemagne.
-
Dans un canvas de largeur 160 pixels, réaliser le drapeau du Palaos.(Attention de bien respecter les proportions)
-
Dans un canvas de 150 pixels, réaliser le drapeau de la république Tchéque.(Attention de bien respecter les proportions)
Les boutons
On considère le script suivant:
# bouton de sortie
from tkinter import *
fenetre = Tk() #on peut choisir le nom que l'on veut pour la fenêtre
bouton=Button(fenetre, text="Quitter", command=fenetre.destroy) #création d'un bouton
bouton.pack() #insertion du bouton dans la fenêtre
fenetre.mainloop() #lancement de la boucle principale
Exécuter ce script.
Les boutons permettent de proposer une action à l'utilisateur. Dans l'exemple ci-dessus,
on lui propose de fermer la fenêtre.
L'option command
peut appeller une fonction qui a été créee précédemment.
Placer des widgets
Il est possible de placer les widgets à l'aide du paramètre side
:
- side=TOP : haut
- side=LEFT : gauche
- side=BOTTOM : bas
- side=RIGHT : droite
On considère la script suivant:
Canvas(fenetre, width=250, height=100, bg='ivory').pack(side=TOP, padx=5, pady=5)
Button(fenetre, text ='Bouton 1').pack(side=LEFT, padx=5, pady=5)
Button(fenetre, text ='Bouton 2').pack(side=RIGHT, padx=5, pady=5)
Exécuter ce script.
On considère la script suivant:
Canvas(fenetre, width=250, height=50, bg='ivory').pack(side=LEFT, padx=5, pady=5)
Button(fenetre, text ='Bouton 1').pack(side=TOP, padx=5, pady=5)
Button(fenetre, text ='Bouton 2').pack(side=BOTTOM, padx=5, pady=5)
Exécuter ce script.
Les unités de dimensions
Si vous indiquez une dimension à travers un integer, l'unité utilisée sera les "pixels".
Les options de dimensions:
- height : Hauteur du widget.
- width : Largeur du widget.
- padx, pady : Espace supplémentaire autour du widget. X pour horizontal et V pour vertical.
- borderwidth : Taille de la bordure.
- highlightthickness : Largeur du rectangle lorsque le widget a le focus.
- selectborderwidth : Largeur de la bordure tridimensionnel autour du widget sélectionné.
- wraplength : Nombre de ligne maximum pour les widget en mode "word wrapping".
Les options de couleurs
Il est possible d'indiquer une valeur de couleur par son nom en anglais: "white", "black", "red", "yellow", etc. ou par son code hexadécimale: #000000, #00FFFF, etc.
- background (ou bg) : couleur de fond du widget.
- foreground (ou fg) : couleur de premier plan du widget.
- activebackground : couleur de fond du widget lorsque celui-ci est actif.
- activeForeground : couleur de premier plan du widget lorsque le widget est actif.
- disabledForeground : couleur de premier plan du widget lorsque le widget est désactivé.
- highlightbackground : Couleur de fond de la région de surbrillance lorsque le widget a le focus.
- highlightcolor : couleur de premier plan de la région en surbrillance lorsque le widget a le focus.
- selectbackground : Couleur de fond pour les éléments sélectionnés.
- selectforeground : couleur de premier plan pour les éléments sélectionnés.
Exercices
Réaliser une fenêtre dans laquelle figure un canvas de 150x120, deux boutons nommés FRANCE et ALLEMAGNE.
Un clic sur un bouton doit dessiner le drapeau correspondant au pays.