Wiki Ubuntu-it

Indice
Partecipa
FAQ
Wiki Blog
------------------
Ubuntu-it.org
Forum
Chiedi
Chat
Cerca
Planet
  • Pagina non alterabile
  • Informazioni
  • Allegati

Versione 1 del 28/08/2007 14.17.57

Nascondi questo messaggio

BR

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:

   1 import gtk
   2 import gtk.glade
   3 # Genera e visualizza la finestra
   4 gtk.glade.XML('example.glade')
   5 # Attendi fino a quando la finestra non viene chiusa
   6 gtk.main()

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()