interfaces graphiques dans Python 3
utilisation de Tkinter
interfaces graphiques pour Python 3
Quelles sont les possibilités pour développer une application
avec une interface graphique (avec gestion par événement) sous Python,
spécialement avec la suite des versions 3.x ?
1. tkinter : Python a adapté le module tk (tkinter) écrit dans le langage
tcl et en a fait un standard de fait : tk/tknter est intégré dans la
distribution du langage. Le module est réduit à l'essentiel (on peut lui
adjoindre des compléments) pour créer des interfaces graphiques indépendantes du
système d'exploitation. Sa simplicité en fait un excellent outil pédagique. D'un
point de vue développement, il est bien adapté pour les applications multi-plateformes,
qui ne nécessitent pas une présentation graphique sophistiquée.
2. wxPython : le module issu de wxWidget écrit en C est téléchargeable.
Cette interface est la plus
utilisée dans le monde Python, en particulier dans celui du logiciel libre.
Elle adapte autant que faire se peut le style de l'environnement graphique du S.E.
Son approche est assez aisée ; malheureusement, le virage de la version 3 de
Python n'a pas été négocié...
3. PyQt : il s'agit de l'interface Qt développée avec et pour le C++. C'est
l'interface la plus complète, mais aussi la plus «technique». Des outils de développement
permettent une utilisation très professionnel. L'interface KDE a été
développée avec QT. Le logiciel calibre est écrit en Python avec Qt.
ateliers d'initialisation à tkinter
Les dossiers sur tkinter ont été rédigés dans des circonstances diverses
et n'ont pas tous le même objectif.
* les premiers dossiers ont été
conçus pour l'initiation. Ils visent d'abord à disposer d'un petit
aise-mémoire de travail, et à éviter quelques écueils.
* le dossier 5, avec l'étude du jeu de Ping a été conçus pour
metttre en jeu une interface graphique en vraie grandeur.
* le dossier 6 a été rédigé pour les Journées de Caen (2010),
lors de la réponse à une question du Chalenge. Il y avait la volonté de
développer un petit logiciel, sans esquiver la partie analyse. La
tonalité est différente de celle des autres dossiers.
La documentation en français est restreinte. Les tutoriels
traitent tous plus ou moins des mêmes sujets et avec un bonheur à
relativiser. La documentation de référence n'existe en pratique qu'en anglais.
Le passage obligé pour Python est "An Introduction to Tkinter" de Frederik Lundth.
Cette documentation date de 1999, et nécessite quelques adaptations.
On trouve en http://effbot.org/tkinterbook/ la version la plus récente, qui reste incomplète.
Il existe une documentation de John W. Shipman pour les étudiants de l'Université du Nouveau Mexique.
Elle répond bien à son objet -une référence pour des étudiants-, elle est fiable mais reste
lacunaire. S'en tenir à la version originale, en anglais.
Bien entendu, il reste la possibilité d'utiliser la documentation interne, engendrée par pydoc3.
Le plus simple est de lancer dans une console : pydoc3 -w tkinter
pydoc3 -w tkinter.tix
L'objectif est de réaliser un document en français des références de tkinter,
aussi exhaustif que possible, mais pratique pour le programmeur
non spécialiste. Si on compare à une approche telle que celle de Lundh,
nous inclurons davantage d'explication et d'exemples.
L'adaptation française d'une référence pose le problèmes du vocabulaire à employer.
Certaines appellations française sont sans problèmes, comme module, importer, variable,
fonction, méthode, classe, canevas, option. Ils sont un équivalent du mot anglais. Mais
assez souvent, plutôt qu'un mot aussi général que option, on préfère attribut.
Le mot texte traduisant text désigne une séquence de caractères ; manager
devient gestionnaire,
event devient événement. Mais event handler devient
plus clairement un gestionnaire d'événement...
manuel des références de tkinter
notion d'application graphique / l'interfaçage de tkinter
la librairie dans l'arborescence Python
la documentation
une documentation illustrée, en français / notre objectif
les widgets de tkinter
valeurs d'attributs standards
couleurs
bordures/ les six reliefs
unités
l'attribut bitmap
l'attribut cursor
justification des textes
quelques types de données spécifiques
utilisation d'images bitmap
la classe BitmapImage
la classe PhotoImage
les fontes
noion de descripteur de fonte
Le module Font le constructeur Font instances
géométries
géométrie des fenêtres / l'objet geometry
Les gestionnaires de placement Le gestionnaire Pack
le gestionnaire Grid Le gestionnaire Place
attributs partagés / attributs donnés à un widget
les méthodes partagées
Événements
les événements reconnus / clavier / souris / fenêtre
la notion de séquence
événements virtuels
le cas de la molette
gestionnaire d'événement / l'objet Event
la liaison / les bindtags
Les protocoles
Tk et Toplevel
Menu
Frame et LabelFrame
PanedWindow
Scrollbar
Label
Button
Checkbutton
Radiobutton
Listbox
OptionMenu
Entry
Text
méthodes générales d'édition
méthodes pour les marqueurs
méthodes pour les éléments fenêtrés inclus
méthodes pour les images incluses
méthodes pour les balises
méthode de rendu
méthodes de recherche
méthodes pour les ascenseurs
Canvas
fonctionnement du widget
dimensions les coordonnées
méthodes générales du widget Canvas
les méthodes create
Bitmap ou Image
ligne et polygone
rectangle d'ellipse
création d'un arc
création de texte
création de fenêtre