## page was renamed from LinguaggioPython/Glade
#format wiki
#LANGUAGE it
< >
<>
<>
= Introduzione =
'''Glade''' è un potente strumento '''RAD''' (Rapid Application Development) per la creazione semplice e veloce di interfacce in modo '''[[https://it.wikipedia.org/wiki/WYSIWYG|WYSIWYG]]''' del toolkit '''GTK+ 3''' e per il desktop '''[[AmbienteGrafico/GNOME|GNOME]]'''.
Le interfacce disegnate con '''Glade''' vengono salvate in file '''XML''' che possono essere usati con molti linguaggi, fra cui '''C''', '''C++''', '''[[Programmazione/CSharp|C#]]''', '''Vala''', '''[[Programmazione/Java|Java]]''', '''Perl''', '''[[Programmazione/Python|Python]]''' e altri.
{{{#!wiki note
Inizialmente la libreria '''libglade''' permetteva di leggere questi file dinamicamente (cioè in fase di esecuzione). '''!GtkBuilder''' (incluso in '''GTK''') ora sostituisce '''libglade'''.
}}}
{{{#!wiki tip
'''Glade''' al momento non supporta '''GTK 4''', ma dal 2021 è in sviluppo un nuovo software per '''GTK 4''' chiamato '''[[https://gitlab.gnome.org/jpu/cambalache|Cambalache]]'''.
}}}
= Installazione =
Sono disponibili tre modalitàità di installazione:
* '''Da repository:''' [[AmministrazioneSistema/InstallareProgrammi|installare]] il pacchetto [[apt://glade|glade]].
* '''Pacchetto snap:''' consultare [[AmministrazioneSistema/InstallareProgrammi/PacchettiSnap|questa guida]].
* '''Pacchetto flatpak:''' consultare [[AmministrazioneSistema/InstallareProgrammi/PacchettiFlatpak|questa guida]].
= File d'esempio =
Di seguito il contenuto di un file `exemple.glade`, il quale descrive una semplice finestra con un testo scritto al centro e un pulsante in basso:{{{
}}}
{{{#!wiki tip
Questo file verrà utilizzato come esempio di partenza per i prossimi esercizi, quindi può essere salvato in una cartella a piacere, insieme ad altri file con il codice necessario per i successivi esercizi.
}}}
= Glade con Python =
Verrà utilizzato '''[[https://pygobject.readthedocs.io/en/latest/|PyGObject]]''' (incluso in Ubuntu 18.04 e successivi), un modulo che consente di accedere a librerie basate su '''GObject''' (come '''GTK+ 3''') all'interno di '''Python'''.
== Visualizzare una GUI ==
Per caricare il file è necessario un oggetto `GtkBuilder`:{{{
builder = Gtk.Builder()
builder.add_from_file("example.glade")
}}}
La seconda riga carica tutti gli oggetti definiti in `example.glade` nell'oggetto `builder`.
Per accedere agli oggetti va usata la funzione `builder.get_object`. Ad esempio, per l'oggetto `window1`:{{{
window = builder.get_object("window1")
}}}
== Gestire i segnali ==
La gestione dei segnali non necessita di codice particolare, poiché può essere programmata con '''Glade''', come mostra la seguente immagine:
<>
Per far sì che i segnali vengano gestiti correttamente, è necessario creare tutte le funzioni collegate e chiamare la funzione `connect_signals`.
Nel file `.glade`, è presente un segnale per chiudere la finestra e uno per cliccare sul pulsante:{{{
...
}}}
Quindi bisogna creare le funzioni `onDestroy` e `onButtonClicked` all'interno di una classe `Handler`:{{{
class Handler:
def onDestroy(self, *args):
Gtk.main_quit()
def onButtonClicked(self, widget):
# contenuto della funzione
}}}
Di seguito il codice completo:{{{
#!python
#!/usr/bin/python
import gi
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk
class Handler:
def onDestroy(self, *args):
# Chiudi il programma
Gtk.main_quit()
def onButtonClicked(self, widget):
# Visualizza un messaggio con un testo in una finestra
dialog = Gtk.MessageDialog(
transient_for=window,
flags=0,
message_type=Gtk.MessageType.INFO,
buttons=Gtk.ButtonsType.CLOSE,
text="Hello World!"
)
dialog.run()
dialog.destroy()
builder = Gtk.Builder()
# Carica il file glade
builder.add_from_file("example.glade")
# Connetti i segnali alle funzioni
builder.connect_signals(Handler())
# Accede all'oggetto window1
window = builder.get_object("window1")
# Visualizza la finestra
window.show_all()
# Attendi fino a quando la finestra non viene chiusa
Gtk.main()
}}}
= Ulteriori risorse =
* [[https://glade.gnome.org/|Sito ufficiale di Glade]]
* [[https://python-gtk-3-tutorial.readthedocs.io/en/latest/builder.html|Tutorial Python-Gtk-3]]
* [[https://flathub.org/apps/details/org.gnome.Glade|FlatHub]]
----
CategoryProgrammazione