Les interfaces utilisateur graphiques (GUI) sont l'une des parties les plus importantes de toute application Web. Certains diront LA partie la plus importante, car les utilisateurs sophistiqués d'aujourd'hui abandonnent rapidement les applications peu conviviales. Il en va de même pour les applications Python. Les programmeurs novices en Python expérimentent généralement la création d'un GUI après avoir maîtrisé les bases du langage de programmation Python. C'est alors qu'ils découvrent qu'un framework est essentiel pour un développement efficace du GUI, mais Python ne manque pas de frameworks d'application GUI. La question devient rapidement, laquelle est la meilleure pour votre application ?
Pour répondre à cette question, nous devons d'abord savoir pourquoi un GUI est importante pour votre application.
Pourquoi un GUI est-elle importante ?
Votre GUI est la première impression de votre application. Si vous espérez réussir, vous ne pouvez pas vous permettre de faire une mauvaise première impression. Vous aurez besoin de nombreux éléments graphiques différents, notamment des boutons, des cases à cocher, des bascules, des listes déroulantes, des champs de recherche, des curseurs, des info-bulles et bien d'autres - tout ce dont votre utilisateur a besoin pour interagir avec les fonctionnalités fournies par votre application. Un placement au hasard ou des widgets peu attrayants n'aideront pas avec les premières impressions.
La sécurité et les performances sont également des facteurs clés qui définissent la qualité de votre application et l'expérience de vos utilisateurs avec celle-ci. Vous voudrez que votre application soit à la fois rapide et sécurisée, mais vous ne voulez pas avoir à sacrifier votre GUI pour le faire. Si les utilisateurs ont du mal à interagir efficacement avec votre application, votre base d'utilisateurs en souffrira.
Pourquoi un framework GUI est-il important ?
Les frameworks de développement sont conçus pour faciliter la vie d'un développeur. Ils facilitent la création d'un type particulier d'application ou l'utilisation d'un langage particulier. Une bibliothèque GUI pour Python rend le développement de l'interface utilisateur de votre application beaucoup plus facile que d'essayer de la coder à la main en Python.
Maintenant que vous savez ce qu'il faut rechercher, je vais décompter ce que je considère être les dix meilleurs frameworks de GUI en Python. Pour chacun, je discuterai de leurs arguments de vente uniques, notamment :
- Pourquoi devriez-vous envisager de les utiliser
- Avantages uniques offerts par chacun d'entre eux
- Limites du cadre dont vous devez être conscient
Avant de commencer : installez notre environnement Python prêt à l'emploi pour les frameworks GUI
Le moyen le plus simple de commencer à tester les frameworks GUI consiste à installer notre environnement Python GUI Frameworks pour Windows ou Linux, qui contient une version de Python et la plupart des packages répertoriés dans cet article.
Afin de télécharger l'environnement Python GUI Frameworks prêt à l'emploi, vous devrez créer un compte ActiveState Platform. Utilisez simplement vos identifiants GitHub ou votre adresse e-mail pour vous inscrire. L'inscription est simple et vous permet d'accéder aux nombreux avantages de la plateforme ActiveState !
Ou vous pouvez également utiliser notre outil State pour installer (plutôt que pip) cet environnement d'exécution.
Pour les utilisateurs Windows, exécutez ce qui suit à une invite CMD pour télécharger et installer automatiquement notre CLI, l'outil d'état ainsi que le runtime GUI Frameworks dans un environnement virtuel :
powershell -Command "& $([scriptblock]::Create((New-Object Net.WebClient).DownloadString('https://platform.activestate.com/dl/cli/install.ps1'))) -activate-default Pizza-Team/GUI-Frameworks-Win"
Pour les utilisateurs Linux, exécutez ce qui suit pour télécharger et installer automatiquement notre CLI, l'outil d'état ainsi que le runtime GUI Frameworks dans un environnement virtuel :
sh <(curl -q https://platform.activestate.com/dl/cli/install.sh) --activate-default Pizza-Team/GUI-Frameworks
10-PyGUI
Le projet Python GUI, aussi appelé framework PyGUI, est une API simple permettant aux développeurs de créer des interfaces utilisateur à l'aide d'éléments natifs pour les applications Python. En tant qu'API légère, peu de code est nécessaire entre l'application et la plate-forme cible, ce qui la rend beaucoup plus efficace que la plupart des autres frameworks de cette liste.
Avantages :
- Documentation entièrement écrite en Python
- Disponible en Python 2 et 3
- Prise en charge d'autres extensions Python comme OpenGL et GTK
- Multiplateforme
- code source ouvert
- Installation facile via pip
Limites: Pas pré-installé avec Python
9–Wax
Wax est le wrapper pour wxPython (voir #3 dans cette liste). Il offre les mêmes fonctionnalités que wxPython, mais est beaucoup plus convivial. J'ai également inclus un exemple d'utilisation de Wax au bas de cet article.
Avantages :
- Open source
- Multiplateforme
- Facile à utiliser
Limites: Pas pré-installé avec Python
8–Pyformes
Pyforms-GUI est une couche logicielle qui fait partie de la bibliothèque principale Pyforms, qui comprend également PyForms-Web et PyForms-Terminal. Pyforms est l'implémentation Python de Windows Forms, qui vous permet de développer des interfaces interactives pour le mode Windows GUI, le mode Web et le mode Terminal.
Avantages :
- Code source ouvert
- Plateforme croisée
- Il a une API minimale, donc les interfaces peuvent être facilement définies avec seulement quelques lignes de code Python
- Vous pouvez également coder des fonctionnalités avancées avec un minimum d'effort
- Le code est organisé en modules, prêt à être réutilisé par d'autres applications
- Simplifie la maintenance des applications
- Prototypage simple et rapide
- Courbe d'apprentissage faible
- Installation facile avec pip
Limites:
- Uniquement disponible pour Python3, et il n'est pas pré-installé
- Ne convient pas pour gérer un grand nombre de champs de données dans un formulaire
- Affiche les valeurs d'attribut d'enregistrement, mais ne prend pas en charge l'appel des fonctions de méthode des objets parcourus
- Il ne peut pas afficher les attributs calculés dynamiquement
7–PySimpleGUI
PySimpleGUI a été créé en 2008 pour rendre le développement de GUI en Python plus accessible. Qu'est-ce qu'il y a dans un nom? Eh bien, comme le surnom l'indique, il s'agit d'un framework de GUI expressément écrit pour les débutants absolus dans le développement de GUI en Python.
Avantages :
- Code source ouvert
- Plateforme croisée
- Python 3
- Facile à installer via pip
- Facile à apprendre
- Beaucoup de documentation et de tutoriels disponibles, ce qui en fait un excellent moyen de commencer à apprendre la conception de GUI
Limites:
- Ne devrait vraiment être utilisé que pour le développement d’un GUI simple (un bouton, des boîtes de dialogue, des zones de texte, etc.)
- Manque un concepteur de formulaires
6–Libavg
Libavg est un excellent framework de GUI en Python spécialement conçu pour la création d'interfaces tactiles. Il est construit en C++, permettant des temps d'exécution rapides, qui sont nécessaires lors de la manipulation d'interfaces tactiles.
Avantages :
- Code source ouvert
- Plateforme croisée
- Prend en charge les pilotes courants pour les écrans tactiles
- Large gamme de fonctionnalités, y compris la prise en charge de la caméra et de l'animation, ainsi que les effets GPU et l'alignement du texte
- Offre un moteur de disposition d'écran pour différentes techniques de manipulation de visualisation
- Prend en charge Python 2.7 et 3
Limites: Pas pré-installé avec Python
5–Kivy
Kivy est une bibliothèque Python open source multiplateforme (basée sur Python et Cython) conçue pour le développement rapide d'applications avec des interfaces utilisateur complexes, comme les applications multi-touch. Kivy fonctionne sous Linux, Windows, OS X, Android, iOS et Raspberry Pi, et vous pouvez exécuter le même code sur toutes ces plateformes.
La combinaison du "code unique, exécuté sur plusieurs plates-formes" et de l'utilisation de techniques graphiques puissantes (prise en charge intégrée d'OpenGL ES 2) rend ce cadre adapté aux concepteurs d'applications iOS et Android.
Avantages :
- Code source ouvert
- Licence MIT
- Widgets intégrés
- Plateforme croisée
Limites: Pas pré-installé avec Python
4–PySide2
PySide2 est Qt pour Python, offrant les liaisons Python officielles pour Qt. Cela permet l'utilisation d'API Qt dans les applications Python, ainsi qu'un outil générateur de liaisons (Shiboken2) pour exposer des projets C++ en Python.
Qt est considéré comme la norme de conception de GUI par rapport à laquelle tous les autres frameworks de GUI en Python sont mesurés. En tant que tel, PySide2 donne aux développeurs Python accès à une collection éprouvée d'outils et de bibliothèques pour la création rapide et flexible d'interfaces utilisateur.
Avantages :
- Installation facile via pip
- Prend en charge Python 3 et Python 2.7
- Plateforme croisée
- Support communautaire étendu et documentation
- Utilisé par des entreprises bien connues comme TomTom et Mercedes
Limites:
- Pas pré-installé avec Python
- Sous licence LGPL, ce qui le rend douteux pour une utilisation dans des applications commerciales puisque vous devrez rendre votre code source disponible
- Les versions Python 2.7 ne sont disponibles que pour les versions 64 bits de MacOS et Linux. La prise en charge de Windows 32 bits est fournie sur Python 2 uniquement.
3–wxPython
wxPython est une boîte à outils de GUI multiplateforme que vous pouvez utiliser pour créer des interfaces graphiques robustes et fonctionnelles de manière simple et facile. L'implémentation est un ensemble de modules d'extension Python qui encapsulent les composants GUI de la bibliothèque multiplateforme wxWidgets, qui est écrite en C++.
wxPython crée des interfaces utilisateur natives qui n'ajoutent aucune charge supplémentaire à l'application, vous offrant les capacités d'une bibliothèque fonctionnelle sans la charge.
Avantages :
- Code source ouvert
- Plateforme croisée
- Prend en charge Python 2.7 et 3
- Simple à utiliser
- Installation en douceur avec pip
Limites: Ne fait pas partie du Python préinstallé sur MacOS
2–Tkinter
Tkinter est une combinaison des frameworks de GUI standard Tcl et Python vous offrant tous les widgets dont vous avez besoin pour créer une interface utilisateur riche pour l'application sur laquelle vous travaillez, mais il est particulièrement adapté au développement d'applications de bureau.
Avantages :
- Si vous utilisez une version récente de Python, Tkinter est probablement déjà installé
- Tkinter propose une vaste collection de widgets bien connus, y compris tous les plus courants comme les boutons, les étiquettes, les cases à cocher, etc.
- L'ajout de code à chaque widget est simple
Limites: Les widgets Tkinter de base sont bons, mais vous voudrez vous assurer que votre version de Tkinter prend également en charge l'ensemble étendu de widgets Ttk
1–PyQt5
PyQt5 est un framework de GUI très connu utilisé à la fois par les codeurs Python et les concepteurs d'interface utilisateur. L'un de ses composants, le package PyQt, est construit autour du framework Qt, qui est un outil de conception de GUI multiplateforme de premier plan pour à peu près n'importe quel type d'application. Le package PyQt5 contient un ensemble détaillé de liaisons pour Python basé sur la dernière version (v5) du framework d'application Qt. Il fournit également un support SQL pour la connexion aux bases de données.
La création d'interfaces graphiques est merveilleusement facile avec les modules QtGUI et QtDesigner, fournissant de nombreux éléments visuels qui peuvent être implémentés simplement en faisant glisser et en déposant des widgets.
Avantages :
- Fonctionnalité glisser-déposer pour implémenter des éléments visuels
- Ajoutez du code aux éléments visuels permettant la création d'applications à petite et grande échelle
- Prise en charge multiplateforme pour Windows, Mac, Android et Raspberry Pi
- Installation facile avec pip
Limites:
- Pas libre! PyQt5 vous oblige à acheter une licence commerciale.
- Pas pré-installé avec Python
- Prise en charge de Python 3 uniquement
Conclusions : quel framework de GUI en Python est le meilleur ?
Pour faire court : cela dépend de vos besoins ! Par exemple:
-
Pour les débutants absolus : je recommanderais de commencer avec PySimpleGUI. Ce framework est facile à suivre et contient beaucoup de documentation pour vous aider à vous familiariser avec la programmation et la conception d'interfaces graphiques avec Python.
-
Si vous trouvez que PySimpleGUI est trop restrictif : essayez quelque chose d'un peu plus complet comme wxPython. Il offre un meilleur ensemble de contrôles / syntaxe dans un cadre facile à utiliser, bien que son wrapper (Wax) soit plus convivial. L'un ou l'autre ferait un bon pas en avant par rapport à PySimpleGUI - le choix vous appartient.
-
Codeurs axés sur la conception : vous aimez la conception de GUI ? Essayez PyQt5, Tkinter ou PySide 2. Tous vous donneront des contrôles merveilleusement flexibles afin que vous puissiez créer l'interface utilisateur de vos rêves. Cependant, gardez à l'esprit que PyQt5 et PySide 2 vous obligeront à acheter une licence.
-
Interfaces utilisateur à écran tactile : vous avez besoin d'une interface utilisateur pour une application à écran tactile ? Kivy et Libavg sont vos meilleurs paris. Si des temps d'exécution rapides sont importants pour vous, je recommanderai Libavg. D'un autre côté, si la conception visuelle est d'une importance primordiale, restez avec Kivy.
-
Interface utilisateur basée sur les formulaires : si votre application est basée sur les formulaires, Pyforms est un bon choix. Sinon, Pyforms est difficile à recommander.
-
Python 2 : si vous travaillez toujours avec Python 2, il existe un certain nombre de frameworks GUI que vous pouvez essayer, notamment PyGUI, PySide 2 et wxPython. Cependant, vous devez savoir que Python 2 n'est plus officiellement pris en charge par la Python Software Foundation ou la communauté Python. Si vous avez besoin d'un support Python 2, consultez notre support étendu.
Prêt pour Wax ? Voici un simple script Python de sélection de date construit avec Wax :
from wax import *
from wax.tools.datepicker import DatePicker
import datetime
import time
class MainFrame(VerticalFrame):
def Body(self):
p1 = HorizontalPanel(self)
dp1 = DatePicker(p1)
p1.AddComponent(dp1)
p1.AddSpace(10)
b1 = Button(p1, "Add 1 day", event=self.AddOneDay)
p1.AddComponent(b1)
p1.Pack()
self.AddComponent(p1, expand='h', border=4)
p2 = HorizontalPanel(self)
dp2 = DatePicker(p2, style='dropdown', show_century=1)
p2.AddComponent(dp2)
p2.AddSpace(10)
b2 = Button(p2, "Yesterday", event=self.SetToYesterday)
p2.AddComponent(b2)
p2.Pack()
self.AddComponent(p2, expand='h', border=4)
self.Pack()
self.BackgroundColor = p1.BackgroundColor
self.dp1 = dp1
self.dp2 = dp2
# restrict dp2's range to current year
thisyear = time.localtime(time.time())[0]
dp2.SetRange((thisyear, 1, 1), (thisyear, 12, 31))
def AddOneDay(self, event):
self.dp1.Inc()
print "Date set to:", self.dp1.Value
def SetToYesterday(self, event):
now = time.localtime(time.time())
self.dp2.Value = now[:3] # tuple: (year, month, day)
self.dp2.Dec()
app = Application(MainFrame, title='datepicker-1')
app.Run()
Pour faciliter l'essai des frameworks GUI, installez l’environnement d'exécution GUI Frameworks pour Windows ou Linux, qui contient une version de Python et la plupart des frameworks GUI de cet article.