PyGTK - Classe barra di stato
Un'area di notifica, solitamente nella parte inferiore di una finestra, è chiamata barra di stato. Qualsiasi tipo di messaggio di modifica dello stato può essere visualizzato sulla barra di stato. Ha anche una presa che può essere ridimensionata.
Il widget gtk.Statusbar mantiene una pila di messaggi. Quindi, il nuovo messaggio viene visualizzato sopra il messaggio corrente. Se viene visualizzato, il messaggio precedente sarà nuovamente visibile. L'origine del messaggio deve essere identificata da context_id per identificarlo in modo univoco.
Quello che segue è il costruttore del widget gtk.Statusbar -
bar = gtk.Statusbar()
I seguenti sono i metodi della classe gtk.Statusbar -
Statusbar.push(context_id, text) - Questo inserisce un nuovo messaggio nello stack di una barra di stato.
Statusbar.pop(context_id) - Questo rimuove il messaggio in alto con il file specificato context_id dallo stack della barra di stato.
I seguenti segnali vengono emessi dal widget della barra di stato:
testo spuntato | Viene emesso quando un messaggio viene rimosso dallo stack dei messaggi della barra di stato. |
testo inserito | Viene emesso quando un messaggio viene aggiunto allo stack dei messaggi della barra di stato. |
Il seguente esempio mostra il funzionamento di Statusbar. La finestra Toplevel contiene un VBox con due righe. La riga superiore ha un widget Fisso in cui vengono inseriti un'etichetta, un widget Entry e un pulsante. Considerando che, nella riga inferiore, viene aggiunto un widget gtk.Statusbar.
Per inviare un messaggio alla barra di stato, è necessario recuperare il relativo context_id.
id1 = self.bar.get_context_id("Statusbar")
Il segnale 'cliccato' dell'oggetto Button è connesso a una funzione di callback attraverso la quale viene inserito un messaggio nella barra di stato. Inoltre, il segnale di "attivazione" viene emesso quando si preme il tasto Invio all'interno del widget Entry. Questo widget è connesso a un altro callback.
btn.connect("clicked", self.on_clicked, id1)
txt.connect("activate", self.on_entered, id1)
Entrambi i callback usano push() metodo per far lampeggiare il messaggio nell'area di notifica.
Esempio
Rispettare il codice seguente:
import gtk
class PyApp(gtk.Window):
def __init__(self):
super(PyApp, self).__init__()
self.set_title("Statusbar demo")
self.set_size_request(400,200)
self.set_position(gtk.WIN_POS_CENTER)
vbox = gtk.VBox()
fix = gtk.Fixed()
lbl = gtk.Label("Enter name")
fix.put(lbl, 175, 50)
txt = gtk.Entry()
fix.put(txt, 150, 100)
btn = gtk.Button("ok")
fix.put(btn, 200,150)
vbox.add(fix)
self.bar = gtk.Statusbar()
vbox.pack_start(self.bar, True, False, 0)
id1 = self.bar.get_context_id("Statusbar")
btn.connect("clicked", self.on_clicked, id1)
txt.connect("activate", self.on_entered, id1)
self.add(vbox)
self.connect("destroy", gtk.main_quit)
self.show_all()
def on_clicked(self, widget, data=None):
self.bar.push(data, "Button clicked
def on_entered(self, widget, data):
self.bar.push(data, "text entered")
PyApp()
gtk.main()
Al momento dell'esecuzione, il codice sopra mostrerà il seguente output:
Prova a digitare nella casella di testo e premi Invio per vedere il messaggio di "testo inserito" nella barra di stato.