seance4_4h.md
-
Derrode Stéphane authoredDerrode Stéphane authored
Sommaire
BE #4 : Application de dessin vectoriel
L'objectif de ce BE est d'apprendre à manipuler quelques composants du module Python Tkinter permettant de créer des interfaces graphiques. Vous allez créer une application simple de dessin vectoriel, qui permettra de tracer à la souris les formes définies dans le BE #2.
Quelques éléments sur Tkinter (45 min.)
Le module Tkinter ("Tk interface") permet de créer des interfaces graphiques. Il contient de nombreux composants graphiques (ou widgets), tels que les boutons (classe Button), les cases à cocher (classe CheckButton), les étiquettes (classe Label), les zones d'entrée de texte (classe Entry), les menus (classe Menu), ou les zones de dessin (classe Canvas).
Durant ce BE, nous vous recommandons de conserver le lien vers une documentation sur Tkinter ouverte dans un onglet de votre navigateur. Elle contient des exemples de code qui vous seront utiles pour utiliser chacun des widgets.
Voici un premier exemple de code Tkinter :
from tkinter import *
from random import randint
class FenPrincipale(Tk):
def __init__(self):
Tk.__init__(self)
# paramètres de la fenêtre
self.title('Tirage aléatoire')
self.geometry('300x100+400+400')
# constitution de l'arbre de scène
boutonLancer = Button(self, text='Tirage')
boutonLancer.pack(side=LEFT, padx=5, pady=5)
self.__texteResultat = StringVar()
labelResultat = Label(self, textvariable=self.__texteResultat)
labelResultat.pack(side=LEFT, padx=5, pady=5)
boutonQuitter = Button(self, text='Quitter')
boutonQuitter.pack(side=LEFT, padx=5, pady=5)
# association des widgets aux fonctions
boutonLancer.config(command=self.tirage) # appel "callback" (pas de parenthèses !)
boutonQuitter.config(command=self.quit) # idem
# tire un entier au hasard et l'affiche dans self.__texteResultat
def tirage(self):
nb = randint(1, 100)
self.__texteResultat.set('Nombre : ' + str(nb))
if __name__ == '__main__':
app = FenPrincipale()
app.mainloop()