Tkinter : Tout ce qu’il faut savoir sur cette bibliothèque Python

-
4
 m de lecture
-

De nos jours, la plupart des applications reposent sur des environnements graphiques tels que Windows ou MacOS. Tkinter est une des solutions envisageables pour coder une telle interface graphique depuis Python. Elle a l’avantage d’être intégrée à Python et donc immédiatement accessible.

Lorsque vous utilisez un outil tel que Jupyter, Google Colab ou Noteable pour entrer des commandes Python et tester votre code, vous exécutez par défaut des programmes en mode console, soit au sein d’un terminal.

Or, l’immense majorité des programmes s’exécutent au sein d’une interface graphique, que ce soit dans Windows, MacOS, ou Gnome (Linux). Donc, vous pourrez avoir à cœur de développer des programmes adaptés à de tels environnements, affichant des fenêtres, des menus déroulant, des boutons interactifs.

Tkinter est intégré à Python

Sous Python, il existe un grand nombre de packages (paquets) dédiés à la réalisation d’une telle interface graphique :

  • wxPython:
  • Kivy:
  • Dear PyGui:
  • etc.

Toutefois, le module TKinter a un atout : il est intégré en standard à Python et il n’est donc pas nécessaire d’installer un quelconque package pour le faire fonctionner. Il suffit de l’importer.

Ainsi, la commande :

from tkinter import *

vous permet de vérifier que votre version de Python intègre bien ce module particulier. A défaut, il faudrait juste mettre à jour ladite version. Il est bon de savoir que sous Python 2x, il faudrait indiquer ‘Tkinter’ à la place de ‘tkinter’.

Tkinter, une bibliothèque multi-plateforme

Un avantage majeur de Tkinter est qu’il est multi-plateforme. Le même code exact fonctionne avec Windows, MacOS et Linux. En d’autres termes, la commande de création d’une fenêtre va créer selon le cas, une fenêtre en mode Windows, en mode MacOS, etc. Ainsi, les applications construites avec Tkinter auront le “look” de la plate-forme sur laquelle on les exécute à un moment donné.

Des widgets

Les éléments que manipule Tkinter sont appelés des widgets. On désigne sous ce nom un élément d’interface utilisateur de l’application ou encore un élément grâce auquel il va être possible d’interagir avec cette application.

Le widget de base est une fenêtre et avec Tkinter, il est extrêmement aisé de créer une fenêtre par défaut. Il en est de même pour tous les autres éléments que l’on va pouvoir placer au sein de cette fenêtre :

  • étiquettes (textes),
  • barres de défilement,
  • boutons,
  • zones de saisie,
  • cases à cocher
  • etc.

Dans un même ordre d’idée, Tkinter rend aisée la création de menus et de sous-menus. Et il offre des outils de personnalisation des éléments affichés par l’application :

  • couleur : texte et arrière-plan.
  • polices : taille, style.

Le module de personalisation ttk

Pour ceux qui souhaitent aller un peu plus loin, le module ttk propose des thèmes un peu plus modernes, par exemple avec des effets de relief sur les boutons.

Parmi les thèmes disponibles avec ttk figurent les suivants :

  • clam : Un style ‘flat design’ et donc plat
  • aqua : uniquement disponible sur macOS
  • vista : thème adapté aux versions récentes de Windows

Gestion des événements

Qui dit interface graphique implique que l’utilisateur va interagir avec l’environnement. Tkinter rend aisée la détection de tels « événements » sur les widgets grâce à un objet appelé « event ». 

Les événements que peut déclencher un usager et auquel l’application va devoir réagir sont essentiellement au nombre de quatre :

  • Événements de souris : clic sur un bouton particulier,  maintien de ce bouton ou relâchement, déplacement de la souris.
  • Événements de clavier : frappe d’une touche, habituellement la touche Entrée, relâchement de la touche.
  • Événements d’entrée : saisie d’un texte par l’utilisateur.
  • Événements de fenêtre : déplacement, redimensionnement de la fenêtre – que l’on peut souhaiter limiter à une taille minimum ou maximum,  fermeture de la fenêtre – ce qui revient à clore l’application.

Pour la gestion des événements,  on parle usuellement de « callback » ou « handler ». L’objet qui est transmis à Python contient des détails tels que le bouton exact de la souris qui a été cliqué (gauche ou droit), la touche exacte du clavier qui a été actionnée, etc. Tkinter facilite la relation de l’objet avec une action spécifique, grâce à un processus appelé « liaison » qui revient à dire à Tkinter : « Lorsque tel événement se produit, je souhaite que telle fonction soit exécutée ».

Intégration avec d’autres bibliothèques

L’une des forces de Tkinter est la possibilité de l’intégrer à d’autres bibliothèques de Python.

Tkinter peut ainsi fonctionner avec des bibliothèques scientifiques comme Numpy ou Pandas, et donc autoriser la création d’application d’analyse de données. Il est pareillement possible d’intégrer le module de visualisation de données Matplotlib, et donc d’afficher des courbes, histogrammes et autres graphiques dans l’interface que l’on pilote. Il est même possible ici d’intégrer des éléments tels que des sliders amenant à influencer lesdits graphiques en temps réel.

De même, Tkinter peut fonctionner conjointement à une base de données comme SQLite (listes, formulaires de saisie) ou avec une bibliothèque de Web scraping (extraction de données du Web) comme BeautifulSoup.

Des interfaces plus modernes que Tkinter

Si Tkinter est l’outil standard intégré à Python pour créer des interfaces utilisateurs, certains estiment que les environnements graphiques qu’il permet de créer, y compris avec ttk, ne sont plus au goût du jour. Si tel est votre cas, il vaudrait mieux recourir à un package tel que les trois évoqués plus haut :

  • wxPython : cette bibliothèque propose une large variété de choix pour la création d’interfaces sophistiquées, avec des fonctionnalités avancées de mise en page.
  • Kivy : une bibliothèque orientée vers les applications mobiles ou tactiles.
  • Dear PyGui : bien adaptée à des applications de visualisation scientifique ou à des simulations nécessitant des graphiques en temps réel, avec un rendu accéléré.

Il reste que Tkinter est un outil léger, aisé à mettre en œuvre, et donc, plus d’un développeur sera tenté d’y recourir pour rapidement bâtir des environnements graphiques fonctionnant sur plusieurs plateformes. Et à tout prendre, c’est un bon point de départ pour s’aventurer dans le code d’interfaces graphiques.

Facebook
Twitter
LinkedIn

DataScientest News

Inscrivez-vous à notre Newsletter pour recevoir nos guides, tutoriels, et les dernières actualités data directement dans votre boîte mail.
Poursuivre la lecture

Vous souhaitez être alerté des nouveaux contenus en data science et intelligence artificielle ?

Laissez-nous votre e-mail, pour que nous puissions vous envoyer vos nouveaux articles au moment de leur publication !

Newsletter icone
icon newsletter

DataNews

Vous souhaitez recevoir notre
newsletter Data hebdomadaire ?