Académique Documents
Professionnel Documents
Culture Documents
Hubert Godfroy
19 novembre 2015
1/11
La dernière fois. . .
I Paradigmes objet
I Paradigme fonctionnel
Aujourd’hui
I Interface graphique
I Programmation événementielle
⇒ Utilise les deux paradigmes
2/11
Plan
Programmation événementielle
3/11
Plan
Programmation événementielle
4/11
Style habituel
inst1
inst2
...
instn−1
instn
I Lecture linéaire
I De haut en bas
I On voit “tout ce qui se passe”.
I Rythmé par les appels de fonction/méthodes
5/11
Programmation par événements
I Envoi de signaux
I Un contrôleur s’occupe d’envoyer les signaux au bon
destinataire
6/11
Programmation par événements
I Envoi de signaux
I Un contrôleur s’occupe d’envoyer les signaux au bon
destinataire
Contrôleur
f1
f2
GUI
f3
f4
f5
6/11
Plan
Programmation événementielle
7/11
Modèle - Vue - Contrôleur
Signaux
Ils sont déclenchés par des instances extérieurs au programme
(clique de l’utilisateur, branchement d’un périphérique, . . . ).
8/11
Modèle - Vue - Contrôleur
Signaux
Ils sont déclenchés par des instances extérieurs au programme
(clique de l’utilisateur, branchement d’un périphérique, . . . ).
Vue
I Compose l’interface utilisateur
I Différents éléments d’interaction (bouton, champs de texte,
labels, . . . )
8/11
GUI en Python
I Environnement Tkinter
I Quatre éléments principaux : Button, Label, Entry et
Canvas.
9/11
Exemple
fen = Tk()
10/11
Exemple
fen = Tk()
bouton = Button(fen, text="quitter", command=fen.
destroy)
lab = Label(fen, text="Trololo")
champs = Entry(fen)
bouton2 = Button(fen, text="the big red button",
command=update)
can = Canvas(fen, width =200, height =200, bg =’red
’)
10/11
Exemple
fen = Tk()
bouton = Button(fen, text="quitter", command=fen.
destroy)
lab = Label(fen, text="Trololo")
champs = Entry(fen)
bouton2 = Button(fen, text="the big red button",
command=update)
can = Canvas(fen, width =200, height =200, bg =’red
’)
can.pack()
bouton.pack()
lab.pack()
champs.pack()
bouton2.pack()
10/11
Exemple
fen = Tk()
bouton = Button(fen, text="quitter", command=fen.
destroy)
lab = Label(fen, text="Trololo")
champs = Entry(fen)
bouton2 = Button(fen, text="the big red button",
command=update)
can = Canvas(fen, width =200, height =200, bg =’red
’)
can.pack()
bouton.pack()
lab.pack()
champs.pack()
bouton2.pack()
fen.mainloop()
10/11
Exemple
fen = Tk()
bouton = Button(fen, text="quitter", command=fen.
destroy)
lab = Label(fen, text="Trololo")
champs = Entry(fen)
bouton2 = Button(fen, text="the big red button",
command=update)
can = Canvas(fen, width =200, height =200, bg =’red
’)
can.pack()
bouton.pack()
lab.pack()
champs.pack()
bouton2.pack()
fen.mainloop()
def update():
lab.config(text="lala")
10/11
Exécution !
11/11