IndiceBR TableOfContents(1) |
Introduzione
Glade è un potente strumento RAD (Rapid Application Development) per la creazione di interfacce del toolkit GTK+ 2 e per il desktop GNOME 2 in modo semplice e veloce. Le interfacce disegnate con Glade vengono salvate in un file XML che rende facile l'integrazione con molti linguaggi, tra cui Python. PyGlade è stato sviluppato per rendere utilizzabili le interfacce senza problemi e con poco codice.
Installazione
È possibile installare Glade e PyGlade con [:SynapticHowto:Synaptic] o da shell con il seguente comando:
apt-get install glade-gnome python-glade
Integrazione negli script
Visualizzare una GUI
Visualizzare una GUI è davvero molto semplice: è sufficiente mettere il file .glade creato dall'editor in una directory nota e scrivere il seguente codice:
sostituendo opportunamente example.glade con il file XML contenente la GUI.
Gestire i segnali
Anche la gestione dei segnali non necessita codice particolare perché può essere programmata con Glade come mostra questo screenshot:
attachment:segnali.png
Fig.1: Gestione dei segnali in Glade
Per fare in modo che i segnali vengano gestiti correttamente, è necessario creare tutte le funzioni collegate ai segnali e chiamare il metodo signal_autoconnect dopo aver inizializzato la GUI passando come unico parametro un dizionario con i riferimenti ai metodi o un oggetto.
1 import gtk
2 import gtk.glade
3
4 def on_ok_clicked(button):
5 # Chiudi il programma alla pressione del tasto 'OK'
6 gtk.main_quit()
7
8 # Genera e visualizza la finestra
9 xml = gtk.glade.XML('example.glade')
10 # Connetti i segnali alle funzioni
11 # locals permette di passare in un dizionario tutte le funzioni dichiarate nel modulo
12 xml.signal_autoconnect(locals())
13
14 # Attendi fino a quando la finestra non viene chiusa
15 gtk.main()
Esempi
Esempi forniti con `python-glade`
glade-demo.py:
1 #!/usr/bin/env python
2 import sys
3 import gtk
4 import gtk.glade
5
6 if len(sys.argv) > 1:
7 fname = sys.argv[1]
8 else:
9 fname = 'test.glade'
10
11 # create widget tree ...
12 xml = gtk.glade.XML(fname)
13
14 def gtk_main_quit(*args):
15 gtk.main_quit()
16
17 xml.signal_autoconnect(locals())
18
19 gtk.main()
autoconnect.py:
1 #!/usr/bin/env python
2 #
3 # Small test to demonstrate glade.XML.signal_autoconnect on an instance
4 #
5
6 import pygtk
7 pygtk.require('2.0')
8
9 import gtk, gtk.glade
10
11 class SimpleTest:
12 def __init__(self):
13 xml = gtk.glade.XML('test2.glade')
14 xml.signal_autoconnect(self)
15
16 def on_button1_clicked(self, button):
17 print 'foo!'
18
19 test = SimpleTest()
20 gtk.main()
Altri esempi
1 #!/usr/bin/env python
2
3 import gtk
4 import gtk.glade
5
6 class MainWindow:
7 def __init__(self):
8 # Visualizza la schermata principale
9 xml = gtk.glade.XML('main.glade')
10 # Associa la pressione di un pulsante a self.show_message
11 xml.signal_autoconnect(self)
12
13 def show_message(self, button):
14 # Visualizza un saluto in una nuova finestra prima di chiudere
15 xml = gtk.glade.XML('message.glade')
16 # Associa la pressione di un pulsante a self.quit
17 xml.signal_autoconnect(self)
18
19 def quit(self, button):
20 # Chiude tutte le finestre
21 gtk.main_quit()