Come creare una semplice applicazione in Python e GTK3

Come creare una semplice applicazione in Python e GTK3
Questo articolo spiegherà come creare un'applicazione grafica "Hello World" in Linux usando il linguaggio di programmazione Python 3 e GTK3 GUI Framework. Tutti i campioni di codice nel tutorial sono testati con Python 3.8.6 e GTK 3.24.23 su Ubuntu 20.10.

Installare i pacchetti necessari

Per creare un'app utilizzando Python 3 e GTK3, è necessario installare binding Python per librerie Gobject. Questo può essere fatto installando il pacchetto PyGobject incluso nei repository di quasi tutte le principali distribuzioni Linux. Per installare queste dipendenze in Ubuntu, è possibile utilizzare il comando di seguito:

$ sudo apt Installa Python3 Python3-Gi

Puoi anche compilare PyGobject dal codice sorgente disponibile qui.

Codice completo dell'applicazione Hello World

Il campione di codice completo di un'applicazione Hello World scritta in Python 3 e GTK3 è disponibile di seguito. Questa domanda invia un "Hello World !!"Notifica al desktop al clic di un pulsante.

Import GI
GI.requisite_version ("gtk", "3.0 ")
GI.requisite_version ('notifica', '0.7 ')
da GI.Repository Import GTK
da GI.Importazione del repository Notifica
Class MyWindow (GTK.Finestra):
def __init __ (self):
Gtk.Finestra.__in se stesso,)
Gtk.Finestra.set_default_size (self, 640, 480)
Notificare.init ("Applicazione semplice GTK3")
se stesso.Box = Gtk.Box (spaziatura = 6)
se stesso.Aggiungi (sé.scatola)
se stesso.Button = gtk.Pulsante (etichetta = "clicca qui")
se stesso.pulsante.set_halign (gtk.Allineare.CENTRO)
se stesso.pulsante.Set_Valign (GTK.Allineare.CENTRO)
se stesso.pulsante.Connect ("Clicked", Self.on_button_Clicked)
se stesso.scatola.pack_start (self.pulsante, vero, vero, 0)
def on_button_clicked (self, widget):
n = notifica.Notifica.Nuovo ("Applicazione semplice GTK3", "Hello World !!")
N.spettacolo()
win = myWindow ()
vincita.Connetti ("Distruggi", GTK.main_quit)
vincita.mostra tutto()
Gtk.principale()

Screenshot del risultato finale.

La notifica desktop che arriva quando si fa clic sul pulsante "Fare clic qui":

Spiegazione passo-passo

Varie dichiarazioni di "importazione" nelle prime righe del codice Importa i moduli necessari per il funzionamento dell'applicazione. Questi moduli espongono numerose classi e funzioni che possono essere utilizzate all'interno dell'applicazione. “GI.Le dichiarazioni requisite_version ”assicurano che venga importata solo la versione richiesta della libreria per evitare problemi di compatibilità e arresti anomali. In questo caso “3.0 "viene utilizzato per assicurarsi che la libreria GTK3 sia utilizzata nell'applicazione e non GTK2 o in qualsiasi altra versione di GTK.

Simile alla classe GTK, anche la classe di notifica viene importata specificando la versione richiesta (0.7 è l'ultima versione al momento della stesura di questo articolo). Questa classe verrà utilizzata più avanti nell'applicazione.

Import GI
GI.requisite_version ("gtk", "3.0 ")
GI.requisite_version ('notifica', '0.7 ')
da GI.Repository Import GTK
da GI.Importazione del repository Notifica

La prossima istruzione sottoclasse “GTK.Classe di finestra "come classe" mywindow ". Il "GTK.Finestra.Il metodo __init__ ”inizializza il costruttore della Super Class (GTK.Finestra) da cui è stata creata una sottoclasse (mywindow). Nel costruttore, il titolo dell'applicazione è anche impostato come "Hello World" usando l'argomento "Titolo". La geometria predefinita della finestra dell'applicazione è anche impostata specificando la larghezza e l'altezza nel metodo "set_default_size".

Class MyWindow (GTK.Finestra):
def __init __ (self):
Gtk.Finestra.__in se stesso,)
Gtk.Finestra.set_default_size (self, 640, 480)

Successivamente, il metodo "init" della classe di notifica viene utilizzato per inizializzare la libreria "libnotify" fornendo un titolo di applicazione. Senza inizializzazione, le notifiche non verranno inviate e mostrate sul desktop Linux.

Notificare.init ("Applicazione semplice GTK3")

L'istruzione "Box" aggiunge un contenitore di layout vuoto alla finestra dell'applicazione principale. Questo contenitore è come una tela vuota in cui è possibile inserire qualsiasi numero di widget. "Spaziatura" si riferisce allo spazio tra i widget nelle unità "Pixel".

se stesso.Box = Gtk.Box (spaziatura = 6)
se stesso.Aggiungi (sé.scatola)

Un nuovo widget del pulsante "Clicca qui" viene creato utilizzando "GTK.Metodo del pulsante ". Viene quindi allineato ai centri orizzontali e verticali del layout della casella principale usando metodi "set_halin" e "set_valigh". Il pulsante è collegato al segnale "Clicked" in modo che ogni volta che viene premuto il pulsante, è possibile invocare il metodo di callback "on_button_clicked". Infine, il widget del pulsante viene inserito da sinistra lungo l'asse orizzontale al layout della scatola usando la "scatola.Metodo pack_start ". Questo metodo richiede quattro argomenti: l'oggetto widget da aggiungere, booleano per espandere il widget, booleano per riempire il widget e imbottitura tra i widget aggiunti e altri adiacenti.

se stesso.Button = gtk.Pulsante (etichetta = "clicca qui")
se stesso.pulsante.set_halign (gtk.Allineare.CENTRO)
se stesso.pulsante.Set_Valign (GTK.Allineare.CENTRO)
se stesso.pulsante.Connect ("Clicked", Self.on_button_Clicked)
se stesso.scatola.pack_start (self.pulsante, vero, vero, 0)

Il metodo "On_Button_Click" viene invocato ogni volta che viene premuto il pulsante "Clicca qui". Una nuova notifica viene creata utilizzando il metodo "nuovo" che prende il titolo e il contenuto della notifica come argomenti. Questa notifica viene quindi mostrata sul desktop usando il metodo "Show". È inoltre possibile spostare la "nuova" dichiarazione nel costruttore principale per evitare di ricreare la notifica ogni volta che viene premuto il pulsante.

def on_button_clicked (self, widget):
n = notifica.Notifica.Nuovo ("Applicazione semplice GTK3", "Hello World !!")
N.spettacolo()

Le prossime dichiarazioni riguardano la creazione, la gestione e la mostra di una nuova finestra dell'applicazione. Viene creata una nuova istanza della classe "MyWindow" ed è connessa al segnale "Distruggi" per garantire che l'applicazione sia chiusa correttamente ogni volta che un utente decide di lasciare l'applicazione facendo clic sul pulsante "X". Il metodo "show_all" visualizza la finestra dell'applicazione sul desktop Linux. Infine, viene eseguito il principale ciclo dell'applicazione responsabile della gestione di eventi e segnali.

Conclusione

GTK3 e QT sono alcuni dei più popolari quadri GUI utilizzati per la creazione di applicazioni che funzionano in modo nativo su Linux. Entrambi questi framework ti consentono di scrivere la logica principale nelle lingue C ++ e Python. Non puoi sbagliare scegliendo nessuno di questi toolkit per il tuo prossimo progetto di applicazione Linux.