Interfaces Graphiques
Programme Séquentiel Programme Évènementiel Initialisations
Traitements
Finalisation
Initialisations
Boucle évènementielle
Finalisation
Boucle Évènementielle
Le programme demande au système de lui fournir l'évènement suivant à traiter:
Évènements utilisateur: souris, clavier…
Évènements système: montage système de fichiers, mise en veille, timer…
Évènements graphiques: redimensionnement fenêtre, passage en premier plan, rafraîchissement nécessaire, changement palette de couleurs…
3
Laurent POINTAL - LIMSI COURS PYTHON
Éléments Graphiques
(Frames, Widgets, Controles...) Fenêtres, fenêtres documents (SDI et MDI).
Dialogues (modaux et non modaux), palettes d'outils.
Barre de menus, menus surgissant.
Boutons d'action, cases à cocher, boutons radio.
Étiquettes, champs d'édition, champs avec menu de sélection.
Barres de défilement.
Listes à sélection.
Arborescences.
Décorations (icônes, dessins, lignes…)
…
4
Laurent POINTAL - LIMSI COURS PYTHON
Hiérarchie d'éléments graphiques
Deux méthodes pour le positionnement:
Coordonnées absolues codées en dur.
Coordonnées calculées dynamiquement...
positionneurs automatiques (layout, sizer).
edit - chaines.py
l34 - c22 - insertion
#!/bin/env python
# -*- coding: ascii -*-
"""extraction des chaines ...
"""
import os,sys ...
Fichier Edition Outils Aide Recherche
Texte:
Rechercher Annuler
Vers le bas Vers le haut
Définition d'une interface
Définition des éléments graphiques.
De leur organisation physique (prise en compte de leurs relations logiques pour leurs positions).
De leurs attributs graphiques.
Des actions associées à leur manipulation.
Librairies Graphiques
Création d'interfaces utilisateur
pyQT pyGTK
wxPython (wxWidgets) win32gui (win32all) ...
Graphisme (courbes & Co)
VTK (The Visualization Toolkit) PIDLE (Plugin Drawing, Does Little Else) motplotlib (Matlab-like)
pyQwt wxPyPlot FloatCanvas SciPy KMatplot ...
7
Laurent POINTAL - LIMSI COURS PYTHON
Tkinter
Installé en standard avec Python.
Mapping de la librairie Tk de Tcl dans Python.
Multi-plateforme.
Nombre de widgets standards relativement limité.
Packages d'extension (Tix, Pmw).
Assez simple:
Gère la boucle évènementielle.
Dispatch les évènements vers des 'callback'.
Docs en ligne assez pauvre, voir les liens indiqués dans la doc (ex. "Thinking in Tkinter", "An introduction to Tkinter", "Tkinter reference: a GUI for Python")
8
Laurent POINTAL - LIMSI COURS PYTHON
Widgets Tkinter
Label - étiquette.
Entry - champs d'édition.
Button - bouton de commande.
Radiobutton - bouton à choix 1 parmi n.
Checkbutton - bouton à option (oui/non).
Menu - menu déroulant.
Text - text complexe (style, taille, images...).
Listbox - liste à sélection.
Frame - conteneur d'autres widgets.
Canvas - zone de tracé graphique.
Widgets Tkinter (2)
Toplevel - fenêtre.
Scrollbar - barre de défilement.
Menubutton – bouton pour menu popup.
Scale - curseur de sélection, thermomètre.
Message - texte long non éditable ajusté.
Layouts Tkinter
Packer - remplissage au fur et à mesure suivant directives.
Grid - répartition dans une grille virtuelle , les widgets occupant les cellules demandées.
Placer - positionnement précis 'à la main', sans influer sur le conteneur.
11
Laurent POINTAL - LIMSI COURS PYTHON
Pour Démarrer
from Tkinter import * root = Tk()
root.title("Ma fenêtre")
...widget = ClasseDuWidget(parent,att=valeur,…) widget.pack(options)
...root.mainloop()
12
Laurent POINTAL - LIMSI COURS PYTHON
Attributs Généraux Widgets
bg (background) - couleur de fond.
fg (foreground) - couleur d'avant plan.
font - famille, taille, style.
cursor - forme de curseur.
relief - type d'encadrement.
bd (borderwidth) - largeur de l'encadrement.
takefocus - indicateur widget navigable au clavier.
Attributs Courants Widgets
text - contenu textuel du widget.
textvariable - variable Tkinter associée au contenu.
state - état du widget.
command - fonction à appeler.
height width - dimensions désirées.
justify - alignement multilignes.
anchor - position du contenu dans le widget.
underline - index caractère à souligner (raccourci).
padx pady - espace supplémentaire autour du widget.
bitmap image - image à afficher dans le widget.
xscrollcommand yscrollcommand - fonction pour scroll.
Méthodes Générales Widgets
Nombreuses (ie. cf doc) after… - code à appeler périodiquement.
bind… unbind… - gestion associations évènements - code (handlers).
clipboard… - gestion du presse-papiers (couper / copier / coller).
configure - modification d'options (comme à la création du widget).
destroy - …
event… - manipulation des files d'évènements.
focus… - gestion du focus (élément 'd'intérêt').
15
Laurent POINTAL - LIMSI COURS PYTHON
Méthodes Générales Widgets (2)
getvar setvar - support variables Tkinter.
grab… - gestion des poignées de manipulation d'objets graphiques.
image… - gestion des images lues.
mainloop quit - boucle évènementielle.
option… - gestion des options par défaut.
selection - gestion des sélections (texte principalement).
update… - mises à jours graphique.
wait… - attente de traitement de certains évènements.
winfo_… - méthodes bas niveau.
…
16
Laurent POINTAL - LIMSI COURS PYTHON
Méthodes Gestionnaire de Fenêtres
(les essentielles)
deiconify - retour fenêtre à l'état précédent l'iconisation.
resizable - autorisation de redimensionnement par l'utilisateur.
title - …
Variables Tkinter
Pour échanger des données de façon automatique entre les widgets et des objets Python.
Classes: StringVar, IntVar, BooleanVar, DoubleVar
Méthodes: set, get, trace_variable, trace_vdelete, …
Un exemple... et des commentaires
(le pseudo-éditeur de texte avec le dialogue de recherche)