Pitone

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 utilizzando il linguaggio di programmazione Python 3 e il framework GUI GTK3. Tutti gli esempi di codice nel tutorial sono testati con Python 3.8.6 e GTK 3.24.23 su Ubuntu 20.10.

Installa i pacchetti necessari

Per creare un'app utilizzando Python 3 e GTK3, devi installare i collegamenti Python per le 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, puoi utilizzare il comando seguente:

$ sudo apt install python3 python3-gi

Puoi anche compilare PyGObject dal codice sorgente disponibile qui.

Codice completo dell'applicazione Hello World

Di seguito è possibile trovare un esempio di codice completo di un'applicazione Hello World scritta in Python 3 e GTK3. Questa applicazione invia un "Hello World !!"notifica sul desktop al clic di un pulsante.

importazione gi
gi.require_version("Gtk", "3.0")
gi.require_version('Notifica', '0.7')
da gi.importazione repository Gtk
da gi.importazione repository Notifica
class MyWindow(Gtk.Finestra):
def __init__(self):
Gtk.Finestra.__init__(self, title="Hello World")
Gtk.Finestra.set_default_size(self, 640, 480)
Notificare.init("Applicazione GTK3 semplice")
se stesso.box = Gtk.Scatola (spaziatura=6)
se stesso.aggiungi (auto).scatola)
se stesso.pulsante = 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("cliccato", self.su_pulsante_cliccato)
se stesso.scatola.pack_start(self.pulsante, Vero, Vero, 0)
def on_button_clicked(self, widget):
n = Notifica.Notifica.new("Applicazione GTK3 semplice", "Hello World !!")
n.mostrare()
win = MyWindow()
vincere.connect("distruggi", Gtk.main_quit)
vincere.mostra tutto()
Gtk.principale()

Screenshot del risultato finale.

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

Spiegazione passo passo

Varie istruzioni "import" nelle prime righe del codice importano i moduli necessari necessari per il funzionamento dell'applicazione. Questi moduli espongono numerose classi e funzioni che possono essere utilizzate all'interno dell'applicazione. “Gi.Le istruzioni require_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 qualsiasi altra versione di GTK.

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

importazione gi
gi.require_version("Gtk", "3.0")
gi.require_version('Notifica', '0.7')
da gi.importazione repository Gtk
da gi.importazione repository Notifica

Le sottoclassi di istruzione successiva “Gtk.Window” come classe “MyWindow”. Il “Gtk.Finestra.__init__” inizializza il costruttore della super classe (Gtk.Window) da cui è stata creata una sottoclasse (MyWindow). Nel costruttore, anche il titolo dell'applicazione è impostato come "Hello World" utilizzando l'argomento "title". La geometria predefinita della finestra dell'applicazione viene impostata anche specificando larghezza e altezza nel metodo "set_default_size".

class MyWindow(Gtk.Finestra):
def __init__(self):
Gtk.Finestra.__init__(self, title="Hello World")
Gtk.Finestra.set_default_size(self, 640, 480)

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

Notificare.init("Applicazione GTK3 semplice")

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

se stesso.box = Gtk.Scatola (spaziatura=6)
se stesso.aggiungi (auto).scatola)

Viene creato un nuovo widget pulsante "Fai clic qui" utilizzando il pulsante "Gtk.Metodo "pulsante". Viene quindi allineato ai centri orizzontali e verticali del layout del riquadro principale utilizzando i metodi "set_halign" e "set_valign". Il pulsante è collegato al segnale "clicked" in modo che ogni volta che il pulsante viene premuto, può essere invocato il metodo di callback "on_button_clicked". Infine, il widget del pulsante viene inserito da sinistra lungo l'asse orizzontale al layout della casella utilizzando il "box.pack_start” metodo. Questo metodo accetta quattro argomenti: l'oggetto widget da aggiungere, booleano per espandere il widget, booleano per riempire il widget e padding tra i widget aggiunti e altri adiacenti.

se stesso.pulsante = 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("cliccato", self.su_pulsante_cliccato)
se stesso.scatola.pack_start(self.pulsante, Vero, Vero, 0)

Il metodo "on_button_click" viene invocato ogni volta che viene premuto il pulsante "Click Here". Viene creata una nuova notifica utilizzando il metodo "nuovo" che prende il titolo e il contenuto della notifica come argomenti. Questa notifica viene quindi mostrata sul desktop utilizzando il metodo "mostra". Puoi anche spostare l'istruzione "new" 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.new("Applicazione GTK3 semplice", "Hello World !!")
n.mostrare()

Le prossime affermazioni riguardano la creazione, la gestione e la visualizzazione di una nuova finestra dell'applicazione. Viene creata una nuova istanza della classe "MyWindow" collegata al segnale "distruggi" per garantire che l'applicazione venga chiusa correttamente ogni volta che un utente decide di uscire dall'applicazione facendo clic sul pulsante "x". Il metodo "show_all" visualizza la finestra dell'applicazione sul desktop Linux. Infine, viene eseguito il ciclo applicativo principale responsabile della gestione di eventi e segnali.

Conclusione

GTK3 e Qt sono alcuni dei framework GUI più popolari utilizzati per creare applicazioni che vengono eseguite in modo nativo su Linux. Entrambi questi framework ti consentono di scrivere la logica principale nei linguaggi C++ e Python. Non puoi sbagliare scegliendo uno di questi toolkit per il tuo prossimo progetto di applicazione Linux.

Il tasto sinistro del mouse non funziona su Windows 10
Se stai utilizzando un mouse dedicato con il tuo laptop o computer desktop ma il il tasto sinistro del mouse non funziona su Windows 10/8/7 per qualch...
Il cursore salta o si sposta in modo casuale durante la digitazione in Windows 10
Se scopri che il cursore del mouse salta o si sposta da solo, automaticamente, in modo casuale durante la digitazione nel laptop o nel computer Window...
Come invertire la direzione di scorrimento del mouse e dei touchpad in Windows 10
Topo e Touchpads non solo rende l'elaborazione semplice, ma anche più efficiente e richiede meno tempo. Non possiamo immaginare una vita senza questi ...