Python

Comment créer une application simple en Python et GTK3

Comment créer une application simple en Python et GTK3
Cet article explique comment créer une application graphique "Hello World" sous Linux à l'aide du langage de programmation Python 3 et du framework graphique GTK3. Tous les exemples de code du didacticiel sont testés avec Python 3.8.6 et GTK 3.24.23 sur Ubuntu 20.dix.

Installer les packages nécessaires

Pour créer une application à l'aide de Python 3 et GTK3, vous devez installer des liaisons Python pour les bibliothèques GObject. Cela peut être fait en installant le package PyGObject inclus dans les référentiels de presque toutes les principales distributions Linux. Pour installer ces dépendances dans Ubuntu, vous pouvez utiliser la commande ci-dessous :

$ sudo apt installer python3 python3-gi

Vous pouvez également compiler PyGObject à partir du code source disponible ici.

Code complet de l'application Hello World

Un exemple de code complet d'une application Hello World écrite en Python 3 et GTK3 peut être trouvé ci-dessous. Cette application envoie un « Hello World !!” notification sur le bureau en cliquant sur un bouton.

importer gi
gi.require_version("Gtk", "3.0")
gi.require_version('Notifier', '0.7')
de gi.importation de référentiel Gtk
de gi.importation de référentiel Notifier
classe MaFenêtre(Gtk.La fenêtre):
def __init__(self):
Gtk.La fenêtre.__init__(self, title="Hello World")
Gtk.La fenêtre.set_default_size(self, 640, 480)
Avertir.init("Application GTK3 simple")
soi.boîte = Gtk.Boîte (espacement=6)
soi.ajouter (soi-même.boîte)
soi.bouton = Gtk.Bouton (étiquette="Cliquez ici")
soi.bouton.set_halign(Gtk.Aligner.CENTRE)
soi.bouton.set_valign(Gtk.Aligner.CENTRE)
soi.bouton.connect("cliqué", soi.on_button_clicked)
soi.boîte.pack_start(self.bouton, Vrai, Vrai, 0)
def on_button_clicked(self, widget):
n = Notifier.Notification.new("Application GTK3 simple", "Hello World !!")
m.spectacle()
gagner = MaFenêtre()
gagner.connect("détruire", Gtk.main_quit)
gagner.Afficher tout()
Gtk.principale()

Capture d'écran du résultat final.

La notification de bureau qui arrive lorsque le bouton « Cliquez ici » est cliqué :

Explication étape par étape

Diverses instructions « import » dans les premières lignes du code importent les modules nécessaires au fonctionnement de l'application. Ces modules exposent de nombreuses classes et fonctions qui peuvent être utilisées dans l'application. "Gi.Les instructions require_version" garantissent que seule la version requise de la bibliothèque est importée pour éviter les problèmes de compatibilité et les plantages. Dans ce cas « 3.0" est utilisé pour s'assurer que la bibliothèque GTK3 est utilisée dans l'application et non GTK2 ou toute autre version de GTK.

Semblable à la classe GTK, la classe Notify est également importée en spécifiant sa version requise (0.7 est la dernière version au moment de la rédaction de cet article). Cette classe sera utilisée plus tard dans l'application.

importer gi
gi.require_version("Gtk", "3.0")
gi.require_version('Notifier', '0.7')
de gi.importation de référentiel Gtk
de gi.importation de référentiel Notifier

L'instruction suivante sous-classe « Gtk.classe Window" en tant que classe "MyWindow". Le "Gtk.La fenêtre.La méthode __init__" initialise le constructeur de la super classe (Gtk.Window) à partir de laquelle une sous-classe (MyWindow) a été créée. Dans le constructeur, le titre de l'application est également défini comme "Hello World" à l'aide de l'argument "title". La géométrie par défaut de la fenêtre d'application est également définie en spécifiant la largeur et la hauteur dans la méthode "set_default_size".

classe MaFenêtre(Gtk.La fenêtre):
def __init__(self):
Gtk.La fenêtre.__init__(self, title="Hello World")
Gtk.La fenêtre.set_default_size(self, 640, 480)

Ensuite, la méthode « init » de la classe Notify est utilisée pour initialiser la bibliothèque « libnotify » en fournissant un titre d'application. Sans initialisation, les notifications ne seront pas envoyées et affichées sur le bureau Linux.

Avertir.init("Application GTK3 simple")

L'instruction "box" ajoute un conteneur de mise en page vide à la fenêtre principale de l'application. Ce conteneur est comme un canevas vide sur lequel n'importe quel nombre de widgets peut être placé. « Espacement » fait référence à l'espace entre les widgets dans les unités « pixels ».

soi.boîte = Gtk.Boîte (espacement=6)
soi.ajouter (soi-même.boîte)

Un nouveau widget de bouton « Cliquez ici » est créé à l'aide du « Gtk.Méthode "bouton". Il est ensuite aligné sur les centres horizontaux et verticaux de la disposition de la boîte parent à l'aide des méthodes « set_halign » et « set_valign ». Le bouton est connecté au signal « clicked » de sorte que chaque fois que le bouton est enfoncé, la méthode de rappel « on_button_clicked » peut être invoquée. Enfin, le widget bouton est inséré de gauche le long de l'axe horizontal jusqu'à la disposition de la boîte à l'aide de la « boîte.méthode pack_start". Cette méthode prend quatre arguments : l'objet widget à ajouter, un booléen pour développer le widget, un booléen pour remplir le widget et un remplissage entre le widget ajouté et les autres widgets adjacents.

soi.bouton = Gtk.Bouton (étiquette="Cliquez ici")
soi.bouton.set_halign(Gtk.Aligner.CENTRE)
soi.bouton.set_valign(Gtk.Aligner.CENTRE)
soi.bouton.connect("cliqué", soi.on_button_clicked)
soi.boîte.pack_start(self.bouton, vrai, vrai, 0)

La méthode "on_button_click" est invoquée chaque fois que le bouton "Click Here" est enfoncé. Une nouvelle notification est créée en utilisant la méthode "new" qui prend le titre et le contenu de la notification comme arguments. Cette notification est ensuite affichée sur le bureau en utilisant la méthode « show ». Vous pouvez également déplacer la déclaration « nouvelle » dans le constructeur principal pour éviter de recréer la notification chaque fois que le bouton est enfoncé.

def on_button_clicked(self, widget):
n = Notifier.Notification.new("Application GTK3 simple", "Hello World !!")
m.spectacle()

Les prochaines déclarations concernent la création, la gestion et l'affichage d'une nouvelle fenêtre d'application. Une nouvelle instance de la classe "MyWindow" est créée et elle est connectée au signal "destroy" pour s'assurer que l'application est fermée correctement chaque fois qu'un utilisateur décide de quitter l'application en cliquant sur le bouton "x". La méthode "show_all" affiche la fenêtre de l'application sur votre bureau Linux. Enfin, la boucle applicative principale responsable de la gestion des événements et des signaux est exécutée.

Conclusion

GTK3 et Qt sont quelques-uns des frameworks GUI les plus populaires utilisés pour créer des applications qui s'exécutent nativement sur Linux. Ces deux frameworks vous permettent d'écrire la logique principale en langages C++ et Python. Vous ne pouvez pas vous tromper en choisissant l'une de ces boîtes à outils pour votre prochain projet d'application Linux.

Remappez les boutons de votre souris différemment pour différents logiciels avec X-Mouse Button Control
Peut-être que vous avez besoin d'un outil qui pourrait faire changer le contrôle de votre souris avec chaque application que vous utilisez. Si tel est...
Examen de la souris sans fil Microsoft Sculpt Touch
J'ai lu récemment sur le Microsoft Sculpt Touch souris sans fil et j'ai décidé de l'acheter. Après l'avoir utilisé pendant un certain temps, j'ai déci...
Trackpad et pointeur de souris à l'écran AppyMouse pour tablettes Windows
Les utilisateurs de tablettes ratent souvent le pointeur de la souris, surtout lorsqu'ils ont l'habitude d'utiliser les ordinateurs portables. Les sma...