120 likes | 292 Views
SEANCE 8. Python Interfaces graphiques. La programmation objet Les widgets . Les labels. Les zones de saisie. Les boutons. Contenu de la séance 8 :. Lundi 16 décembre 2013. Elles permettent de rendre les programmes plus conviviaux.
E N D
SEANCE 8 Python Interfaces graphiques Lundi 16 décembre 2013
La programmation objet • Les widgets. • Les labels. • Les zones de saisie. • Les boutons. Contenu de la séance 8 : Lundi 16 décembre 2013
Elles permettent de rendre les programmes plus conviviaux. • Une interface graphique est constituée de composants (ou encore widgets) qui sont la source d’évènements. • Le déroulement d’un programme avec interface graphique est différent des programmes vus jusqu’à présent. • Composants ou widgets : ce sont des boutons, zones de saisie, zones de dessin, labels, listes déroulantes, boîtes à cocher, bouton radio … • Un évènement : clic sur un bouton de la souris, saisie d’un texte, toucher Entrée, flèches du clavier … Interfaces graphiques
Plusieurs librairies (modules) en python sont disponibles pour réaliser des interfaces graphiques : • tkinter (python version 3) Tkinter (version 2) • wxPython • Plus complexe et complet que tkinter • pyQT, pyGTK • Pygame http://wiki.python.org/moin/TkInter http://docs.python.org/3.2/library/tkinter.html http://www.pythonware.com/library/tkinter/introduction/ http://www.pythonware.com/media/data/an-introduction-to-tkinter.pdf Interfaces graphiques et Python
A chaque widget correspond une classe • Instanciation de l’objet avec une méthode constructeur (commence par une majusculeet porte le nom de la classe du widget, plusieurs existent par widget) • Ajout de l’objet à l’interface (ie à la fenêtre racine) avec la méthode pack • Des méthodes communes à tous les widgets : pack(), grid(),place(),config(), ... Les widgets
Squelette du programme construisant une interface graphique (IG) Fromtkinter import *# pour la version 3 de Python # et Tkinterpour la version 2 fen=Tk() # création de la fenêtre principale et affectation de l’instance dans la variable fen Ajout des différents widgets fen.mainloop() #Affiche la fenêtre pricipale et provoque le démarrage du réceptionnaire d'événement qui se met à l'écoute des événements pouvant survenir dans la fenêtre issus de différents widgets La fenêtre racine
Ils sont utilisés pour afficher des textes et des images. • Quelques propriétéspouvant être initialisées à l’appel du constructeur Label (…) : text=" texte du balel", bg=" couleur de fond", fb =" couleur du texte",db=bordure, width=largeur, height=hauteur,... • Exemple : exLabel_V3.py fromtkinterimport * fen=Tk() obj=Label(text= "zone de txt",bg= "blue",fg= "yellow",bd=3) obj.pack() obj2=Label(bitmap= "question",bg= "red",fg= "grey",bd=5) obj2.pack() fen.mainloop() Les labels : classe Label
Elles sont utilisées pour la saisie de textes par l’utilisateur. • Quelques propriétéspouvant être initialisées à l’appel du constructeur Entry (…) : bg=" couleur de fond", fb=« couleur du texte",db=bordure, width =largeur en caractères de la zone de saisie … • Une méthode : • get() : permet d’obtenir le contenu de la zone de saisie, renvoie une chaîne • Exemple : exEntry_V3.py Les zones de saisie : classe Entry
fromtkinter import * fen=Tk() obj=Label(text="zone de saisie :") obj.pack() obj2=Entry(bg="grey",fg="blue",width=55) obj2.insert(0,"Le chat est dans le grenier") ch=obj2.get() print (ch) obj2.insert(16," le jardin ou") ch=obj2.get() print (ch) obj2.delete(27,55) obj2.pack() ch=obj2.get() print (ch) fen.mainloop() La classe Entry :
ils sont utilisés pour insérer des boutons dans une interface graphique. Un bouton est relié à une action ! • Quelques propriétéspouvant être initialisées à l’appel du constructeur Button(…) : text=" texte du bouton", bg=" couleur de bouton", fb=" couleur du texte",image (image sur le bouton), command=pour associer une fonction au bouton • Une méthode : • invoke() : permet de rappeler la commande associée au bouton • Exemple : exButton_V3.py Les boutons : classe Button
fromtkinterimport * #FONCTIONS defplus(): global nb nb=nb+1 l.config(text=nb) l.pack() #PROGRAMME PRINICIPAL fen=Tk() nb=0 l=Label(text=nb) l.pack() b=Button(text= "Incrémenter",command=plus) b.pack() fen.mainloop() #Affiche la fenêtre pricipale et provoque le démarrage du gestionnaire La classe Button :