Comment créer une application simple dans Python et GTK3

Comment créer une application simple dans Python et GTK3
Cet article expliquera comment créer une application graphique «Hello World» dans Linux en utilisant le langage de programmation Python 3 et le framework GTK3 GUI. Tous les échantillons de code dans le tutoriel 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 grandes 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 échantillon de code complet d'une application Hello World écrite dans Python 3 et GTK3 peut être trouvée ci-dessous. Cette application envoie un «Hello World !!"Notification au bureau en cliquant sur un bouton.

Importer GI
gi.require_version ("gtk", "3.0 ")
gi.require_version ('notify', '0.7')
de Gi.Importation du référentiel GTK
de Gi.Référentiel Importation de notification
classe Mywindow (GTK.Fenêtre):
def __init __ (soi):
Gtk.Fenêtre.__en soi,)
Gtk.Fenêtre.set_default_size (self, 640, 480)
Aviser.init ("Application simple GTK3")
soi.boîte = gtk.Boîte (espacement = 6)
soi.Ajouter (soi.boîte)
soi.bouton = gtk.Bouton (label = "cliquez ici")
soi.bouton.set_halign (gtk.Aligner.CENTRE)
soi.bouton.set_valign (gtk.Aligner.CENTRE)
soi.bouton.connecter ("cliquer", soi.on_button_clicked)
soi.boîte.pack_start (soi.bouton, vrai, vrai, 0)
def on_button_clicked (self, widget):
n = notifier.Notification.Nouveau ("Application GTK3 simple", "Hello World !!")
n.montrer()
win = mywindow ()
gagner.connecter ("détruire", gtk.main_quit)
gagner.Afficher tout()
Gtk.principal()

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 «Importer» dans les premières lignes du code Importer les modules nécessaires pour que l'application fonctionne. Ces modules exposent de nombreuses classes et fonctions qui peuvent être utilisées dans l'application. «GI.Les déclarations requises_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 de notification est également importée en spécifiant sa version requise (0.7 est cette 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 ('notify', '0.7')
de Gi.Importation du référentiel GTK
de Gi.Référentiel Importation de notification

La déclaration suivante sous-classe «GTK.Classe de fenêtre "comme classe" mywindow ". Le «gtk.Fenêtre.__init__ ”Méthode initialise le constructeur de la super classe (GTK.Fenêtre) à partir de laquelle une sous-classe (Mywindow) a été créée. Dans le constructeur, le titre d'application est également défini comme «Hello World» en utilisant 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 de la méthode "set_default_size".

classe Mywindow (GTK.Fenêtre):
def __init __ (soi):
Gtk.Fenêtre.__en soi,)
Gtk.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 indiquées sur le bureau Linux.

Aviser.init ("Application simple GTK3")

L'instruction «Box» ajoute un conteneur de mise en page vide à la fenêtre d'application principale. Ce conteneur est comme une toile vide où un certain nombre de widgets peuvent être mis en place. «Espacement» fait référence à l'espace entre les widgets dans les unités «Pixel».

soi.boîte = gtk.Boîte (espacement = 6)
soi.Ajouter (soi.boîte)

Un nouveau widget de bouton «Cliquez ici» est créé à l'aide du «GTK.Méthode du bouton. Il est ensuite aligné sur les centres horizontaux et verticaux de la disposition de la boîte parent à l'aide de méthodes «set_halign» et «set_valign». Le bouton est connecté au signal «cliqué» afin que chaque fois que le bouton est enfoncé, la méthode de rappel «on_button_cicked» peut être invoquée. Enfin, le widget de bouton est inséré à partir de gauche le long de l'axe horizontal à la disposition de la boîte à l'aide du «Box.Méthode Pack_Start ”. Cette méthode prend quatre arguments: l'objet widget à ajouter, booléen pour étendre le widget, booléen pour remplir le widget et rembourrer entre les widgets adjacents ajoutés et adjacents.

soi.bouton = gtk.Bouton (label = "cliquez ici")
soi.bouton.set_halign (gtk.Aligner.CENTRE)
soi.bouton.set_valign (gtk.Aligner.CENTRE)
soi.bouton.connecter ("cliquer", soi.on_button_clicked)
soi.boîte.pack_start (soi.bouton, vrai, vrai, 0)

La méthode "on_button_click" est invoquée chaque fois que le bouton "Cliquez ici" est appuyé sur. Une nouvelle notification est créée à l'aide de la «nouvelle» méthode qui prend le titre de notification et le contenu comme arguments. Cette notification est ensuite affichée sur le bureau à l'aide de la méthode «Show». Vous pouvez également déplacer la «nouvelle» instruction 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.Nouveau ("Application GTK3 simple", "Hello World !!")
n.montrer()

Les prochaines déclarations consistent à créer, gérer et afficher une nouvelle fenêtre d'application. Une nouvelle instance de la classe «MyWindow» est créée et elle est connectée au signal «détruire» pour s'assurer que l'application est clôturée 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 d'application sur votre bureau Linux. Enfin, la boucle d'application principale responsable de la gestion des événements et des signaux est exécutée.

Conclusion

GTK3 et QT sont quelques-uns des cadres d'interface graphique 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 dans les langues C ++ et Python. Vous ne pouvez pas vous tromper en choisissant l'une de ces boîtes d'outils pour votre prochain projet d'application Linux.