Piton

Cum să creați o aplicație simplă în Python și GTK3

Cum să creați o aplicație simplă în Python și GTK3
Acest articol va explica cum să creați o aplicație grafică „Hello World” în Linux folosind limbajul de programare Python 3 și cadrul GUK GTK3. Toate probele de cod din tutorial sunt testate cu Python 3.8.6 și GTK 3.24.23 pe Ubuntu 20.10.

Instalați pachetele necesare

Pentru a crea o aplicație folosind Python 3 și GTK3, trebuie să instalați legături Python pentru bibliotecile GObject. Acest lucru se poate face prin instalarea pachetului PyGObject inclus în depozite de aproape toate distribuțiile majore Linux. Pentru a instala aceste dependențe în Ubuntu, puteți utiliza comanda de mai jos:

$ sudo apt install python3 python3-gi

De asemenea, puteți compila PyGObject din codul sursă disponibil aici.

Codul complet al aplicației Hello World

Exemplul complet de cod al unei aplicații Hello World scrisă în Python 3 și GTK3 poate fi găsit mai jos. Această aplicație trimite un „Hello World !!”Notificare către desktop prin apăsarea unui buton.

import gi
gi.require_version ("Gtk", "3.0 ")
gi.require_version („Notificați”, „0.7 ')
din gi.depozit de import Gtk
din gi.import depozit Notificare
clasa MyWindow (Gtk.Fereastră):
def __init __ (auto):
Gtk.Fereastră.__init __ (self, title = "Hello World")
Gtk.Fereastră.set_default_size (self, 640, 480)
Notificați.init („Aplicație simplă GTK3”)
de sine.cutie = Gtk.Cutie (spațiu = 6)
de sine.adăuga (auto.cutie)
de sine.buton = Gtk.Buton (etichetă = „Faceți clic aici”)
de sine.buton.set_halign (Gtk.Alinia.CENTRU)
de sine.buton.set_valign (Gtk.Alinia.CENTRU)
de sine.buton.conectare („făcut clic”, auto.on_button_clicked)
de sine.cutie.pack_start (auto.buton, Adevărat, Adevărat, 0)
def on_button_clicked (self, widget):
n = Notificați.Notificare.nou („Aplicație simplă GTK3”, „Hello World !!")
n.spectacol()
win = MyWindow ()
victorie.conectare („distruge”, Gtk.main_quit)
victorie.arata tot()
Gtk.principal()

Captură de ecran a rezultatului final.

Notificarea desktop care ajunge când se face clic pe butonul „Faceți clic aici”:

Explicație pas cu pas

Diverse declarații de „import” din primele câteva rânduri ale codului importă modulele necesare pentru ca aplicația să funcționeze. Aceste module expun numeroase clase și funcții care pot fi utilizate în cadrul aplicației. „Gi.declarațiile require_version ”asigură importarea doar a versiunii necesare a bibliotecii pentru a evita problemele de compatibilitate și blocarea. În acest caz „3.0 ”este utilizat pentru a vă asigura că biblioteca GTK3 este utilizată în aplicație și nu GTK2 sau orice altă versiune a GTK.

Similar clasei GTK, clasa Notify este, de asemenea, importată specificând versiunea necesară (0.7 este ultima versiune la momentul scrierii acestui articol). Această clasă va fi utilizată mai târziu în aplicație.

import gi
gi.require_version ("Gtk", "3.0 ")
gi.require_version („Notificați”, „0.7 ')
din gi.depozit de import Gtk
din gi.import depozit Notificare

Următoarea afirmație subclasă „Gtk.Clasa Window ”ca clasa„ MyWindow ”. „Gtk.Fereastră.__init__ ”metoda inițializează constructorul super clasei (Gtk.Window) din care a fost creată o subclasă (MyWindow). În constructor, titlul aplicației este, de asemenea, setat ca „Hello World” folosind argumentul „title”. Geometria implicită a ferestrei aplicației este, de asemenea, setată prin specificarea lățimii și înălțimii în metoda „set_default_size”.

clasa MyWindow (Gtk.Fereastră):
def __init __ (auto):
Gtk.Fereastră.__init __ (self, title = "Hello World")
Gtk.Fereastră.set_default_size (self, 640, 480)

Apoi, metoda „init” a clasei Notify este utilizată pentru a inițializa biblioteca „libnotify” prin furnizarea unui titlu de aplicație. Fără inițializare, notificările nu vor fi trimise și afișate pe desktop-ul Linux.

Notificați.init („Aplicație simplă GTK3”)

Declarația „casetă” adaugă un container de aspect gol în fereastra principală a aplicației. Acest container este ca o pânză goală în care poate fi pus orice număr de widgeturi. „Spațiere” se referă la spațiul dintre widget-uri din unitățile „pixel”.

de sine.cutie = Gtk.Cutie (spațiu = 6)
de sine.adăuga (auto.cutie)

Un nou widget de butoane „Faceți clic aici” este creat folosind „Gtk.Metoda Buton ”. Apoi este aliniat la centrele orizontale și verticale ale aspectului casetei părinte folosind metodele „set_halign” și „set_valign”. Butonul este conectat la semnalul „clicat”, astfel încât ori de câte ori butonul este apăsat, metoda de apel invers „on_button_clicked” poate fi invocată. În sfârșit, widgetul de butoane este inserat de la stânga de-a lungul axei orizontale până la aspectul casetei folosind „caseta.pack_start ”metodă. Această metodă ia patru argumente: obiectul widget care trebuie adăugat, boolean pentru extinderea widgetului, boolean pentru umplerea widgetului și căptușirea între widget-urile adăugate și alte widget-uri adiacente.

de sine.buton = Gtk.Buton (etichetă = „Faceți clic aici”)
de sine.buton.set_halign (Gtk.Alinia.CENTRU)
de sine.buton.set_valign (Gtk.Alinia.CENTRU)
de sine.buton.conectare („făcut clic”, auto.on_button_clicked)
de sine.cutie.pack_start (auto.buton, Adevărat, Adevărat, 0)

Metoda „on_button_click” este invocată ori de câte ori este apăsat butonul „Click Here”. O nouă notificare este creată utilizând metoda „nouă” care ia drept titlu și conținut notificarea ca argumente. Această notificare este apoi afișată pe desktop utilizând metoda „show”. Puteți muta, de asemenea, declarația „nouă” în constructorul principal pentru a evita recrearea notificării ori de câte ori este apăsat butonul.

def on_button_clicked (self, widget):
n = Notificați.Notificare.nou („Aplicație simplă GTK3”, „Hello World !!")
n.spectacol()

Următoarele câteva afirmații sunt despre crearea, gestionarea și afișarea unei noi ferestre de aplicații. Se creează o nouă instanță a clasei „MyWindow” și este conectată la semnalul „distrugere” pentru a se asigura că aplicația este închisă de fiecare dată când un utilizator decide să renunțe la aplicație dând clic pe butonul „x”. Metoda „show_all” afișează fereastra aplicației pe desktop-ul Linux. În cele din urmă, se execută bucla principală de aplicație responsabilă de gestionarea evenimentelor și a semnalelor.

Concluzie

GTK3 și Qt sunt unele dintre cele mai populare cadre GUI utilizate pentru crearea de aplicații care rulează nativ pe Linux. Ambele cadre vă permit să scrieți logica principală în limbaje C ++ și Python. Nu puteți greși alegând oricare dintre aceste seturi de instrumente pentru următorul dvs. proiect de aplicație Linux.

Cele mai bune jocuri de linie de comandă pentru Linux
Linia de comandă nu este doar cel mai mare aliat al tău când folosești Linux - poate fi și sursa de divertisment, deoarece poți să o folosești pentru ...
Best Gamepad Mapping Apps for Linux
If you like to play games on Linux with a gamepad instead of a typical keyboard and mouse input system, there are some useful apps for you. Many PC ga...
Instrumente utile pentru jucătorii Linux
Dacă vă place să jucați jocuri pe Linux, este posibil să fi folosit aplicații și utilitare precum Wine, Lutris și OBS Studio pentru a îmbunătăți exper...