Interface graphique en Python

publicité
Interface graphique
en Python
4V748
Enseignement Supérieur Public
26/02/2013
4V748 (Ens Sup Pub)
4V748 : Python Graphique
26/02/2013
1 / 17
Introduction
Définition
Une interface graphique, c’est :
une interface un dispositif destiné à permettre les interactions
entre programme et utilisateur,
graphique qui présente des informations de façon visuelle
et reçoit des messages via une souris (ou autre pointeur).
4V748 (Ens Sup Pub)
4V748 : Python Graphique
26/02/2013
2 / 17
Introduction
Pourquoi faire ?
Plusieurs raisons pour écrire des programmes graphiques :
utilisation agréable
résultats plus immédiatement parlants
mise en évidence de l’effet d’un paramètre, ...
accessible aux personnes peu familières avec les ordinateurs
Mais aussi des inconvénients :
répétition d’une même séquence d’actions
apprentissage peu générique
difficile à adapter à un besoin particulier
4V748 (Ens Sup Pub)
4V748 : Python Graphique
26/02/2013
3 / 17
Introduction
Modes de fonctionnement
Non interactif
Interactif en terminal
Interactif graphique
NB On trouve des programmes mixtes
ex. interactif avec lecture de données dans un fichier,
graphique avec paramètres lors du lancement, etc.
4V748 (Ens Sup Pub)
4V748 : Python Graphique
26/02/2013
4 / 17
Architecture
Architecture d’un programme graphique
Au lancement du programme :
construction de l’interface
boucle d’attente
Dans la boucle :
chaque action de l’utilisateur appelle une fonction
I
I
I
I
réglage d’un paramètre (valeur, choix binaire / multiple, ...)
lecture de données (fichier, réseau, capteur, ...)
traitement (calculs, ...)
écriture de résultats (fichier, réseau, affichage, ...)
une fonction appelée peut modifier l’affichage
une fonction permet de quitter le programme
4V748 (Ens Sup Pub)
4V748 : Python Graphique
26/02/2013
5 / 17
Architecture
Élements d’une interface
Bouton avec texte
Curseur
Bouton radio
Liste déroulante
Menu
Espace dessinable
etc.
4V748 (Ens Sup Pub)
4V748 : Python Graphique
26/02/2013
6 / 17
Architecture
Rassurez-vous...
... nous n’allons pas programmer le dessin de ces objets,
ni leur comportement lorsqu’on interagit avec eux !
Nous utiliserons :
une bibliothèque graphique
adaptée à notre langage de programmation
le gestionnaire graphique du système
pour une meilleure intégration (thème, langue,...)
4V748 (Ens Sup Pub)
4V748 : Python Graphique
26/02/2013
7 / 17
Architecture
Architecture en couches
4V748 (Ens Sup Pub)
4V748 : Python Graphique
26/02/2013
8 / 17
Architecture
Architecture en couches : construction
4V748 (Ens Sup Pub)
4V748 : Python Graphique
26/02/2013
9 / 17
Architecture
Architecture en couches : fonctionnement
4V748 (Ens Sup Pub)
4V748 : Python Graphique
26/02/2013
10 / 17
Architecture
Bibliothèques graphiques
PyGTK
PyQt
Tkinter
wxPython
4V748 (Ens Sup Pub)
4V748 : Python Graphique
26/02/2013
11 / 17
Tkinter
Caractéristiques de Tkinter
Libre, gratuite
Portable : Unix, Windows, Mac...
Bibliothèque Orientée Objets
I
I
I
Un élément graphique ("Widget") = un instance d’une classe
Hiérarchie d’objets
On peut dériver ses propres objets
4V748 (Ens Sup Pub)
4V748 : Python Graphique
26/02/2013
12 / 17
Tkinter
Hiérarchie de classes de Tkinter (extrait)
http://knipknap.github.io/exscript/api/class- tree.html
4V748 (Ens Sup Pub)
4V748 : Python Graphique
26/02/2013
13 / 17
Tkinter
Le programme Tkinter minimal
helloMV448.py
from Tkinter import *
root = Tk()
w = Label(root, text="Hello, MV448 world!")
w.pack()
root.mainloop()
> python helloMV448.py
4V748 (Ens Sup Pub)
4V748 : Python Graphique
26/02/2013
14 / 17
Tkinter
Construire son interface
Principe : les éléments sont ajoutés un à un avec la méthode pack()
MV448_3Butt.py
import Tkinter
fenetre=Tkinter.Tk()
fenetre.title(":-)")
zone=Tkinter.Frame(fenetre)
boutG=Tkinter.Button(zone,text="Gauche")
boutH=Tkinter.Button(zone,text="Haut")
boutB=Tkinter.Button(zone,text="Bas")
boutG.pack(side=Tkinter.LEFT)
boutH.pack(side=Tkinter.TOP)
boutB.pack()
zone.pack()
fenetre.mainloop()
4V748 (Ens Sup Pub)
4V748 : Python Graphique
26/02/2013
15 / 17
Tkinter
Callback avec paramètres
Principe : on crée un objet
MV448_QuitButton.py ...
... MV448_QuitButton.py
from Tkinter import *
racine=Tk()
class AuRevoir:
def __init__(self):
self.nam=’inconnu’
def fetch(self):
self.nam=zt.get()
print ’Texte: <%s>’ % self.nam
def bye(self):
print ’goodbye, ’+self.nam+’.’
import sys
sys.exit()
zt = Entry(racine)
zt.pack(side=TOP, fill=X)
ciao=AuRevoir()
racine.mainloop()
bf = Button(racine, text=’Fetch’,
command=ciao.fetch)
bf.pack(side=LEFT)
bq = Button(racine, text="Quitter",
command=ciao.bye)
bq.pack(side=RIGHT)
> python MV448_QuitButton.py
Texte: <Bob>
goodbye, Bob.
4V748 (Ens Sup Pub)
4V748 : Python Graphique
26/02/2013
16 / 17
Tkinter
4V748 (Ens Sup Pub)
4V748 : Python Graphique
26/02/2013
17 / 17
Téléchargement