Inizio del viaggio tra le Gtk3

Devo ammetterlo sono un pochino stanco delle solite cose.
Al lavoro sono sempre lì a barcamenarmi tra java e php, ogni tanto un programmatore ha bisogno di solleticare la sua curiosità, il suo interesse, e magari mettere le mani su qualcosa di nuovo.
In realtà all’inizio ero stato attirato dal linguaggio Lava, creato dalla comunità Gnome, ma poi ho trovato un post in cui uno degli autori ammetteva che come linguaggio era pieno di bug e che non avevano la volontà e le energie per portarlo avanti. Peccato, perchè sarebbe stato interessante e perchè moltissimi progetti Gnome al momento sono scritti in Lava, per esempio: Geary e LaTeXila. I progetti che ho citato sono carini, scritti bene, mi chiedo cosa ne sarà di loro.
Devo ammettere che il pericolo che si cela spesso dietro il software libero è legato alla caratteristica di cui tutti i programmatori si gloriano: la curiosità. Partono entusiasti ma quando vedono un’altra luce, più brillante, lasciano tutto a metà strada, buttano via migliaia di ore di lavoro loro e degli altri, e vanno via.
Ecco dunque perchè ho pensato che sarebbe stato meglio dedicare il tempo a python, che come linguaggio difficilmente morirà tanto facilmente e al bridge creato con le Gtk, perchè dopo tanto web ho bisogno di creare qualcosa per desktop.

Ed ecco il primo pezzetto di codice fra tutti tanto per cominciare a muovere le mani:


import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk

class MyWindow(Gtk.Window):

def __init__(self):
Gtk.Window.__init__(self, title="Ciao Fabio")
self.button = Gtk.Button(label="Click Me")
self.button.connect("clicked", self.on_button_clicked)
self.add(self.button)

def on_button_clicked(self, widget):
print("Ciao Fabio!!!")

win = MyWindow()
win.connect("delete-event", Gtk.main_quit)
win.show_all()
Gtk.main()

Premetto che il codice che scriverò sarà eseguito su python3 e che al momento sto lavorando su di una macchina ubuntu la quale nella installazione di default fornisce python3 e il bridge Gtk3 per python.

Questo piccolo programma è molto semplice ma ha al suo interno diversi elementi importanti.
Le prime tre righe servono a importare la libreria Gtk versione 3.

In seguito si definisce la classe MyWindow che estende la classe Gtk.Window. Questo piccolo passo è importante perchè la libreria funziona estendendo una classe base e attraverso l’ereditarità la classe figlia si ritroverà a possedere tutti i metodi e le proprietà della classe padre.

All’interno della classe MyWindow definiamo due metodi.
Il primo metodo è il costruttore, che alla prima riga non fa altro che chiamare il costruttore della classe padre, quindi crea un bottone, collega l’evento clicked del bottone al secondo metodo della classe ed in fine lo aggiunge alla finestra.
Il secondo metodo come dicevo è il metodo che si collega all’evento clicked del bottone appena creato nel costruttore.
Questo non fa altro che scrivere la stringa “Ciao Fabio!!!” sulla console.

Veniamo alla parte finale, quella che attiva effettivamente tutto.
La prima cosa che faccio è creare una istanza della classe.
Poi collego l’evento “delete-event” al metodo Gtk.main_quit. Questo serve a fare in modo che quando l’utente clicca il bottoncino a croce sulla finestra l’applicazione si chiuda.
A questo punto invoco il metodo win.show_all che fa in modo che la finestra appaia sullo schermo ed in fine il metodo Gtk.main() che fa in modo che l’applicazione entri nel loop principale e rimanga in ascolto per gli eventi.

Sembra un programmino piccolo, ma è insidioso perchè contiene molti concetti che vanno obbligatoriamente visti insieme per far in modo che tutto funzioni.

Spero questa introduzione vi sia piaciuta, saluti!

Nessun commento

Lascia un commento

La tua email non sarà mai resa pubblica.I campi obbligatori sono segnalati con un *