Comment créer des applications GUI sous Linux Desktop à l'aide de PygObject - Partie 1

Comment créer des applications GUI sous Linux Desktop à l'aide de PygObject - Partie 1

La création d'applications sur Linux peut être effectuée en utilisant différentes manières, mais il existe des moyens de faire limités, donc en utilisant les langages et les bibliothèques de programmation les plus simples et les plus fonctionnels, c'est pourquoi nous allons rapidement consulter la création d'applications sous le Linux Desktop utilisant la bibliothèque GTK + avec un langage de programmation Python qui est appelé «Pygobject".

Pygobject Utilise l'introspection Gobject pour créer une liaison pour les langages de programmation comme Python, PygObject est la prochaine génération de pygtk, vous pouvez dire que pygObject = python + gtk3.

Créer des applications GUI dans Linux - Partie 1

Aujourd'hui, nous allons démarrer une série sur la création d'applications GUI (interface utilisateur graphique) sous le bureau Linux à l'aide de la bibliothèque GTK + et Pygobject Langue, la série couvrira les sujets suivants:

Partie 1: Comment créer des applications GUI sous Linux Desktop à l'aide de PygObject Partie 2: Créer plus d'applications PygObject à l'avance sur Linux Partie 3: Créez vos propres applications de «navigateur Web» et de «enregistreur de bureau» à l'aide de PygObject Partie 4: Emballage des programmes PygObject pour le bureau Linux Partie 5: Traduire des applications pygobject en différentes langues
À propos de Python

Tout d'abord, vous devez avoir des connaissances de base dans Python; Python est un langage de programmation très moderne et facile à utiliser. C'est l'un des langages de programmation les plus célèbres au monde, en utilisant Python, vous pourrez créer de nombreuses grandes applications et outils. Vous pouvez suivre des cours gratuits comme ceux de Codeacademy.com ou vous pouvez lire quelques livres sur Python à:

À propos de GTK+

Gtk+ est une boîte à outils multiplateformes open source pour créer des interfaces utilisateur graphiques pour les applications de bureau, elle a été lancée en 1998 en tant que boîte à outils GUI pour le gimp, plus tard, il a été utilisé dans de nombreuses autres applications et est rapidement devenu l'une des bibliothèques les plus célèbres Pour créer des interfaces grasses. GTK + est libéré sous la licence LGPL.

Création d'applications GUI sous Linux

Il existe 2 façons de créer les applications à l'aide de GTK + & Python:

  1. Écriture de l'interface graphique à l'aide du code uniquement.
  2. Concevoir l'interface graphique à l'aide du «Clairière»Programme; qui est un outil RAD pour concevoir facilement les interfaces GTK +, Glade génère l'interface graphique en tant que fichier XML qui peut être utilisé avec n'importe quel langage de programmation pour construire l'interface graphique, après avoir exporté le fichier XML de l'interface graphique, nous serons en mesure de lier le fichier XML avec notre fichier programme pour faire les travaux que nous voulons.

Nous expliquerons dans les deux sens en bref.

La manière uniquement du code

L'écriture de l'interface graphique en utilisant uniquement le code peut être un peu difficile pour les programmeurs noob et le temps très en temps, mais en l'utilisant, nous pouvons créer des GUIS très fonctionnels pour nos programmes, plus que ceux que nous créons en utilisant des outils comme Glade.

Prenons l'exemple suivant.

#!/ usr / bin / python # - * - codage: utf-8 - * - de gi.Référentiel Importation GTK Classe Ourwindow (GTK.Fenêtre): def __init __ (self): gtk.Fenêtre.__init __ (self,) gtk.Fenêtre.set_default_size (self, 400,325) gtk.Fenêtre.set_position (self, gtk.Fenêtre.Centre) Button1 = GTK.Bouton ("Bonjour, monde!") Button1.connecter ("cliquer", soi.whenbutton1_clicked) self.Ajouter (Button1) def WHERSBUTTON1_CLICKED (Self, Button): Imprimez "Bonjour, Monde!"fenêtre = fenêtre ourwindow ().connecter ("Delete-Event", GTK.Fenêtre Main_Quit).show_all () gtk.principal() 

Copiez le code ci-dessus, collez-le dans un «test.py”Fichier et définir la permission 755 sur le test.fichier py et exécuter le fichier plus tard en utilisant "./test.py", C'est ce que vous obtiendrez.

# test nano.Test PY # CHMOD 755.py # ./test.py 
Hello World Script

En cliquant sur le bouton, vous voyez le «Bonjour le monde!”Phrase imprimée dans le terminal:

Tester le script Python

Permettez-moi d'expliquer le code dans des explications détaillées.

  1. #!/ usr / bin / python: Le chemin par défaut pour l'interpréteur Python (version 2.7 Dans la plupart des cas), cette ligne doit être la première ligne de chaque fichier python.
  2. # - * - CODING: UTF-8 - *-: Ici, nous définissons le codage par défaut pour le fichier, UTF-8 est le meilleur si vous souhaitez prendre en charge les langues non anglophones, laissez-la comme ça.
  3. de Gi.Importation du référentiel GTK: Ici, nous importons la bibliothèque GTK 3 pour l'utiliser dans notre programme.
  4. Class Ourwindow (GTK.Fenêtre): Ici, nous créons une nouvelle classe, qui s'appelle «Ourwindow», nous définissons également le type d'objet de classe sur un «GTK.Fenêtre".
  5. def __init __ (soi): Rien de nouveau, nous définissons les composants de la fenêtre principale ici.
  6. Gtk.Fenêtre.__init __ (self, title = ”mon programme Hello World"): Nous utilisons cette ligne pour définir le titre «My Hello World Program» sur la fenêtre «Ourwindow», vous pouvez changer le titre si vous le souhaitez.
  7. Gtk.Fenêtre.set_default_size (self, 400,325): Je ne pense pas que cette ligne nécessite une explication, ici nous définissons la largeur et la hauteur par défaut de notre fenêtre.
  8. Gtk.Fenêtre.set_position (self, gtk.Fenêtre.CENTRE): En utilisant cette ligne, nous serons en mesure de définir la position par défaut de la fenêtre, dans ce cas, nous le définissons sur le centre à l'aide du «GTK.Fenêtre.Paramètre central », si vous le souhaitez, vous pouvez le changer en« GTK.Fenêtre.Souris "Pour ouvrir la fenêtre sur la position du pointeur de la souris.
  9. Button1 = GTK.Bouton («Bonjour le monde!»): Nous avons créé une nouvelle GTK.Bouton, et nous l'avons appelé "Button1", le texte par défaut du bouton est "Bonjour, monde!», Vous pouvez créer n'importe quel widget GTK si vous le souhaitez.
  10. Button1.connecter («cliquer», soi.whenbutton1_clicked): Ici, nous relions le signal "cliqué" avec l'action "whenbutton1_clicked", de sorte que lorsque le bouton est cliqué, l'action "whenbutton1_clicked" est activée.
  11. soi.Ajouter (Button1): Si nous voulons que nos widgets GTK apparaissent, nous devons les ajouter à la fenêtre par défaut, cette ligne simple ajoute le widget "Button1" à la fenêtre, il est très nécessaire de le faire.
  12. def whenbutton1_clicked (self, bouton): Maintenant, nous définissons l'action "whenbutton1_clicked" ici, nous définissons ce qui va se passer lorsque le widget "Button1" est cliqué, le paramètre "(self, bouton)" est important afin de spécifier le type d'objet parent de signal.
  13. Imprimez «Bonjour le monde!": Je n'ai pas à expliquer plus ici.
  14. fenêtre = ourwindow (): Nous devons créer une nouvelle variable globale et la définir sur la classe OurWindow () afin que nous puissions l'appeler plus tard en utilisant la bibliothèque GTK +.
  15. fenêtre.Connect («Delete-Event», GTK.main_quit): Maintenant, nous connectons le signal «Delete-Event» avec le «GTK.Action main_quit ”, c'est important pour supprimer tous les widgets après avoir fermé la fenêtre de notre programme automatiquement.
  16. fenêtre.Afficher tout(): Affichage de la fenêtre.
  17. Gtk.principal(): Exécuter la bibliothèque GTK.

C'est ça, facile n'est pas? Et très fonctionnel si nous voulons créer de grandes applications. Pour plus d'informations sur la création d'interfaces GTK + à l'aide de la manière uniquement du code, vous pouvez visiter le site Web officiel de la documentation à:

Tutoriels Python GTK3

La voie de la Glade

Comme je l'ai dit au début de l'article, Glade est un outil très facile pour créer les interfaces dont nous avons besoin pour nos programmes, il est très célèbre parmi les développeurs et de nombreuses interfaces de grandes applications ont été créées à l'aide. Cette manière est appelée «développement rapide des applications».

Vous devez installer Glade pour commencer à l'utiliser, sur Debian / Ubuntu / Mint Run:

$ sudo apt - gel instally gly 

Sur Redhat / Fedora / Centos, courir:

# Yum Installer Glade 

Après avoir téléchargé et installé le programme, et après l'avoir exécuté, vous verrez les widgets GTK disponibles à gauche, cliquez sur le "fenêtre”Widget afin de créer une nouvelle fenêtre.

Créer un nouveau widget

Vous remarquerez qu'une nouvelle fenêtre vide est créée.

Nouveau widget de fenêtre

Vous pouvez maintenant y ajouter des widgets, dans la barre d'outils de gauche, cliquez sur le "bouton”Widget, et cliquez sur la fenêtre vide afin d'ajouter le bouton à la fenêtre.

Ajouter un widget

Vous remarquerez que l'ID de bouton est "Button1», Reportez-vous maintenant à l'onglet Signals dans la bonne barre d'outils et recherchez le«cliqué"Signal et entrez"Button1_Clicked" dessous.

Propriétés du bouton Onglet Signals

Maintenant que nous avons créé nos GUI, exportons-le. Clique sur le "Déposer"Menu et choisissez"Sauvegarder», Enregistrez le fichier dans votre répertoire domestique dans le nom«myprogram.clairière»Et soyez.

Fichier du widget d'exportation

Maintenant, créez un nouveau "test.py»Fichier et entrez le code suivant à l'intérieur.

#!/ usr / bin / python # - * - codage: utf-8 - * - de gi.Référentiel Importation GTK GRANDER: DEF Button_1Clicked (self, bouton): Imprimez "Bonjour, Monde!"Builder = GTK.Constructeur () constructeur.add_from_file ("myProgram.Glade ") constructeur.connect_signals (handler ()) ournewbutton = builder.get_object ("Button1") OurNewButton.set_label ("bonjour, monde!") Window = Builder.fenêtre get_object ("window1").connecter ("Delete-Event", GTK.Fenêtre Main_Quit).show_all () gtk.principal() 

Enregistrez le fichier, donnez-lui 755 autorisations comme avant et exécutez-la en utilisant "./test.py«, Et c'est ce que vous obtiendrez.

# test nano.Test PY # CHMOD 755.py # ./test.py 
Hello World Window

Cliquez sur le bouton et vous remarquerez que le "Bonjour le monde!»La phrase est imprimée dans le terminal.

Expliquons maintenant les nouvelles choses:

  1. gestionnaire de classe: Ici, nous créons une classe appelée «Handler» qui comprendra les définitions des actions et des signaux, nous créons pour l'interface graphique.
  2. constructeur = gtk.Constructeur(): Nous avons créé une nouvelle variable globale appelée «Builder» qui est une GTK.Widget de constructeur, cela est important pour importer le .fichier GLADE.
  3. constructeur.add_from_file ("MyProgram.clairière"): Ici, nous importons le «myProgram.Fichier Glade »pour l'utiliser comme GUI par défaut pour notre programme.
  4. constructeur.connect_signals (handler ()): Cette ligne relie le .Fichier Glade avec la classe du gestionnaire, de sorte que les actions et les signaux que nous définissons sous la classe «gestionnaire» fonctionnent bien lorsque nous exécutons le programme.
  5. OurNewButton = Builder.get_object ("Button1"): Maintenant, nous importons l'objet "Button1" à partir du .Fichier Glade, nous le transmettons également à la variable globale «Ournewbutton» pour l'utiliser plus tard dans notre programme.
  6. Ournewbutton.set_label («Bonjour le monde!»): Nous avons utilisé le «ensemble.Méthode d'étiquette pour définir le texte du bouton par défaut sur le «Hello, monde!" phrase.
  7. fenêtre = constructeur.get_object ("window1"): Ici, nous avons appelé l'objet «Window1» du .Fichier Glade afin de le montrer plus tard dans le programme.

Et c'est tout! Vous avez réussi à créer votre premier programme sous Linux!

Bien sûr, il y a des choses beaucoup plus compliquées à faire pour créer une véritable application qui fait quelque chose, c'est pourquoi je vous recommande de jeter un œil à la documentation GTK + et à l'API Gobject à:

  1. Manuel de référence GTK +
  2. Référence de l'API Python Gobject
  3. Référence pygobject

Avez-vous développé une application auparavant sous le bureau Linux? Ce que le langage et les outils de programmation ont utilisé pour le faire? Que pensez-vous de la création d'applications en utilisant Python & GTK 3?