PyGTK : l’outil de création d’interface graphique en Python

-
4
 m de lecture
-

PyGTK est un module Python permettant de créer une interface utilisateur graphique (GUI) pour une application. Découvrez tout ce que vous devez savoir sur cet outil et son successeur PyGObject : fonctionnement, avantages et inconvénients, formations...

Une interface graphique utilisateur est indispensable pour une application moderne. Elle permet aux utilisateurs d’interagir en toute simplicité. Afin de créer une telle GUI pour un programme en Python, on utilise généralement le module PyGTK.

Qu'est-ce que PyGTK ?

Créé par James Henstridge, PyGTK est un module permettant de créer des interfaces graphiques en Python, pour permettre aux utilisateurs d’interagir avec une application rapidement.

Son nom est une combinaison entre le langage Python et GTK : GIMP ToolKit. En effet, il s’agit d’une collection de wrappers Python pour la bibliothèque d’interface utilisateur graphique GTK+.

Elle regroupe de nombreux éléments graphiques et autres outils de programmation pour la construction d’applications. Très intuitif, PyGTK est idéal pour le prototypage rapide.

Ce logiciel open-source sous licence LGPL est aussi une bibliothèque cross-platform. Il peut être installé sur Unix et Win32. C’est une extension du projet GNOME.

À quoi sert PyGTK ?

On utilise principalement PyGTK pour la création d’interface graphique utilisateur (GUI) en langage Python. Une telle interface regroupe une fenêtre et sa collection de widgets, incluant des boîtes de dialogue, des cases à cocher, des boutons, du texte et d’autres éléments.

La GUI envoie un signal au programme dès que l’utilisateur interagit avec cette fenêtre ou l’un de ses widgets. Et ce, même s’il se contente de les survoler avec le curseur de sa souris. Le but est d’informer le programme qu’une réponse peut être requise.

Avantages et inconvénients de PyGTK

L’un des principaux points forts de PyGTK est un haut niveau de performances, notamment pour les versions 0.X pour GTK 1.2. La version 2.0 pour GTK 2.X reste très correcte.

Cet outil propose aussi une API efficace basée sur le signal et la propagation de callback. Chaque composant peut envoyer un signal, transmis vers le haut jusqu’à ce qu’il soit capturé et qu’un appel callback soit généré.

Un outil de création d’interface dénommé Glade permet de générer une référence XML pour l’interface que la bibliothèque peut utiliser directement.

En outre, PyGTK offre un haut de niveau de portabilité des applications vers Windows. Ce portage peut généralement s’effectuer sans avoir à modifier le code.

Enfin, la documentation de cet outil est très complète. On retrouve d’excellents tutoriels pour les deux versions, et la référence est particulièrement étendue pour la 2.X.

En revanche, le principal point faible de PyGTK est la taille du code. Même si une majeure partie semble superflue, elle est indispensable.

Pour utiliser n’importe quel élément, il est nécessaire de le construire, puis de l’appeler, de le configurer avec ses méthodes, de le positionner puis de le montrer avec la méthode show (). On dénombre au moins trois méthodes d’appel pour chaque objet. Par conséquent, le code source est volumineux.

Les modules de PyGTK

Il existe différents modules pour PyGTK. Pango est une bibliothèque de mise en page textuelle et de dessin focalisée sur l’internationalisation.

Cairo est une bibliothèque de graphiques 2D pouvant prendre en charge différents types d’appareils. La bibliothèque ATK propose des outils d’accessibilité comme des interfaces utilisateur, des loupes ou des appareils d’entrée alternatifs.

Le module GTK est responsable de l’interface utilisateur, tandis que Glade est utilisé pour créer des interfaces graphiques à partir de fichiers XML. Enfin, GObject est la classe de fondation pour les classes PyGTK et fournit les fonctions et attributs communs.

Les classes de PyGTK

Voyons à présent les différentes classes de PyGTK. La classe gtk.Widget fournit un ensemble standardisé de méthodes et de signaux pour les widgets.

La classe gtk.Window est une fenêtre contenant une barre de titre et des boutons permettant de la redimensionner, de la fermer ou de la déplacer.

Le gtk.Dialog est utilisé pour créer une fenêtre popup contenant les informations et les options que l’utilisateur peut choisir. Le gtk.Button est un widget de bouton envoyant un signal lorsqu’on clique dessus. Il est généralement affiché comme bouton-poussoir avec une étiquette de texte et utilisé pour attacher une fonction callback.

De son côté, gtk.Label affiche le texte en lecture seule. Avec gtk.Layout, il est possible de créer une zone défilable avec les widgets enfants et des graphiques personnalisés pouvant défiler indéfiniment.

Le gtk.Toolbar est un conteneur stockant et maintenant une barre de boutons et de widgets horizontale ou verticale. Le widget gtk.ComboBox est utilisé pour choisir des éléments dans une liste.

Pour ajouter une barre de défilement horizontal ou vertical, on utilise gtk.Scrollbar. La classe gtk.ProgressBar permet d’afficher la progression d’un processus de longue durée. Enfin, le gtk.Menu regroupe des objets d’éléments de menu auquel l’utilisateur peut accéder, exécutant des fonctions d’application en cas d’activation.

Quelles applications utilisent PyGTK ?

De nombreuses applications utilisent PyGTK. En guise d’exemples bien connus, on peut citer l’installateur Anaconda, BitTorrent, SoundConverter ou Ubuntu Software Center.

Les autres exemples incluent Deluge, Emesene, Flumotion, Exaile, gDesklets, Gajim, GIMP et Gedit, Gramps GNOME Sudoku, Jokosher, le client de microblogging Gwibbler, PyMusique, puddletag, Tryton, ROX Desktop, Pybliographer, l’IDE Wing, Comix ou encore l’installateur Ubuntu Ubiquity.

Qu'est-ce que PyGObject ?

Avec le lancement de la version 3 de GTK, PyGTK est remplacé par PyGObject utilisant l‘Introspection GObject pour générer des bindings pour Python et d’autres langages très rapidement. Ceci permettra de supprimer le délai entre les mises à jour GTK et les bindings dans différents langages.

Cet outil fournit un wrapper à utiliser dans les programmes Python lors de l’accès aux bibliothèques GObject : un système objet notamment utilisé par GTK, GLib, GIO, GStreamer.

Toute bibliothèque utilisant l’Introspection GObject est dynamiquement accessible pour PyGObject. Ceci remplace le besoin de modules séparés comme PyGTK, GIO et python-gnome pour construire une application GNOME 3.0 complète.

Dès qu’une nouvelle fonctionnalité est ajoutée à la bibliothèque GObject, elle est immédiatement disponible en tant qu’API Python sans avoir besoin d’intermédiaire.

Le wrapper PyGObject et la bibliothèque GObject sont sous la licence GNU LGPL. Ils sont donc adaptés pour un usage sur des logiciels libres et propriétaires. De nombreuses applications les utilisent déjà, tant pour de petits scripts à usage unique que de larges applications.

En guise d’exemple, on peut citer Ex Falso, Gramps, Meld, Pitivi, PyChess et Quod Libet. Même si PyGObject a déjà remplacé PyGTK, le portage prend du temps pour de nombreux programmes.

Conclusion : PyGTK, un module Python très utile pour la création de GUI

Le module Python PyGTK permet de créer facilement des interfaces graphiques avancées pour des applications. Il s’agit d’un outil open-source et cross-platform offrant une grande flexibilité, désormais remplacé par PyGObject.

Afin d’apprendre à manier PyGTK, PyGObject et Python, vous pouvez choisir DataScientest. Nos formations aux métiers de la Data Science comportent toutes un module dédié à ce langage de programmation.

Ces différents cursus vous permettront d’acquérir toutes les compétences requises pour exercer les professions de Data Analyst, Data Engineer, Data Scientist, Machine Learning Engineer ou encore Data Product Manager.

Tous nos programmes se complètent intégralement à distance via le web, et notre organisme est éligible au Compte Personnel de Formation pour le financement. N’attendez plus et découvrez DataScientest !

Vous savez tout sur PyGTK. Pour plus d’informations sur le même sujet, découvrez notre dossier complet sur Python et notre dossier sur NumPy.

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 ?