Développement GUI en Python avec Tkinter : Guide complet
Python offre diverses options pour développer des interfaces graphiques (GUI). Les plus importantes sont :
Tkinter : Interface Python vers le toolkit GUI Tk fourni avec Python. C'est l'option étudiée dans ce chapitre.
wxPython : Interface open-source Python pour wxWindows (https://wxpython.org).
JPython : Portage Python pour Java offrant un accès transparent aux bibliothèques de classes Java locales (https://www.jython.org).
De nombreuses autres interfaces sont disponibles sur le net.
Programmation Tkinter
Tkinter est la bibliothèque GUI standard pour Python. Python combiné à Tkinter offre un moyen rapide et facile de créer des applications GUI. Tkinter fournit une interface orientée objet puissante au toolkit GUI Tk.
Créer une application GUI avec Tkinter est simple. Il suffit de :
Importer le module
Tkinter.Créer la fenêtre principale de l'application GUI.
Ajouter un ou plusieurs widgets (contrôles) à l'application.
Entrer dans la boucle principale d'événements pour réagir aux actions de l'utilisateur.
Exemple
#!/usr/bin/python
import Tkinter
top = Tkinter.Tk()
# Code pour ajouter les widgets ira ici...
top.mainloop()
Cela crée une fenêtre basique.
Widgets Tkinter
Tkinter fournit divers contrôles : boutons, étiquettes, zones de texte, etc. Ces contrôles sont appelés widgets.
Il y a actuellement 15 types de widgets de base dans Tkinter (plus quelques extensions). Voici un tableau récapitulatif :
| N° | Widget et description |
|---|---|
| 1 | Button Affiche des boutons dans votre application. |
| 2 | Canvas Dessine des formes : lignes, ovales, polygones, rectangles. |
| 3 | Checkbutton Affiche des options sous forme de cases à cocher. Sélection multiple possible. |
| 4 | Entry Champ de texte sur une ligne pour saisir des valeurs. |
| 5 | Frame Conteneur pour organiser d'autres widgets. |
| 6 | Label Légende sur une ligne pour d'autres widgets. Peut contenir des images. |
| 7 | Listbox Liste d'options pour l'utilisateur. |
| 8 | Menubutton Affiche des menus dans l'application. |
| 9 | Menu Fournit des commandes à l'utilisateur, contenues dans un Menubutton. |
| 10 | Message Affiche des champs de texte multilignes. |
| 11 | Radiobutton Options sous forme de boutons radio. Une seule sélection possible. |
| 12 | Scale Curseur (slider). |
| 13 | Scrollbar Ajoute défilement à divers widgets (listes, etc.). |
| 14 | Text Affiche du texte sur plusieurs lignes. |
| 15 | Toplevel Fenêtre conteneur séparée. |
| 16 | Spinbox Variante de Entry pour sélectionner parmi un nombre fixe de valeurs. |
| 17 | PanedWindow Conteneur avec plusieurs panneaux, horizontaux ou verticaux. |
| 18 | LabelFrame Conteneur simple, agit comme espaceur ou conteneur pour layouts complexes. |
| 19 | tkMessageBox Module pour afficher des boîtes de message. |
Étudions ces widgets en détail.
Attributs standards
Regardons comment spécifier certains attributs communs : tailles, couleurs, polices.
Dimensions
Couleurs
Polices
Ancres (anchors)
Styles de relief
Bitmaps
Curseurs
Étudions-les brièvement.
Gestion de la géométrie
Tous les widgets Tkinter ont accès à des méthodes de gestion de géométrie spécifiques, qui organisent les widgets dans la zone du widget parent. Tkinter expose trois gestionnaires : pack, grid et place.
La méthode pack() : Organise les widgets en blocs avant de les placer dans le widget parent.
La méthode grid() : Organise les widgets dans une structure tabulaire (grille) dans le widget parent.
La méthode place() : Place les widgets à une position précise dans le widget parent.
Étudions brièvement ces méthodes de gestion de géométrie.
Python
- Maîtriser les types de données Python : Guide pratique
- Maîtriser les opérateurs Python : Guide complet
- Maîtriser l'instruction pass en Python : Guide pratique
- Maîtriser les arguments de fonctions Python : Positionnels, nommés et paramètres par défaut
- Maîtriser les dictionnaires Python : création, manipulation et techniques avancées
- Maîtriser la programmation orientée objet Python : classes, héritage, encapsulation et polymorphisme
- Maîtriser les itérateurs Python : fonctionnement et création des vôtres
- Les fermetures Python expliquées : comment les fonctions imbriquées capturent les variables
- Maîtriser Python datetime : guide pratique pour les dates, heures et fuseaux horaires