## 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:{{{ 300 100 False True False vertical True False Glade è tuo amico True True 0 Cliccami True True True False True 1 }}} {{{#!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