PyGTK - klasa Statusbar
Obszar powiadomień, zwykle u dołu okna, nazywany jest paskiem stanu. Na pasku stanu można wyświetlić dowolny typ komunikatu o zmianie stanu. Posiada również uchwyt, za pomocą którego można zmieniać jego rozmiar.
Widżet gtk.Statusbar obsługuje stos wiadomości. W związku z tym nowa wiadomość zostanie wyświetlona nad bieżącą wiadomością. Jeśli się pojawi, wcześniejszy komunikat będzie ponownie widoczny. Źródło wiadomości należy zidentyfikować za pomocą identyfikatora kontekstu, aby je jednoznacznie zidentyfikować.
Poniżej znajduje się konstruktor widżetu gtk.Statusbar -
bar = gtk.Statusbar()
Poniżej przedstawiono metody klasy gtk.Statusbar -
Statusbar.push(context_id, text) - Spowoduje to umieszczenie nowej wiadomości na stosie paska stanu.
Statusbar.pop(context_id) - Spowoduje to usunięcie pierwszej wiadomości z określonym context_id ze stosu paska stanu.
Następujące sygnały są emitowane przez widżet paska stanu -
wyskakujący tekst | Jest to emitowane, gdy wiadomość jest usuwana ze stosu komunikatów paska stanu. |
przekazany tekst | Jest to emitowane, gdy wiadomość jest dodawana do stosu komunikatów paska stanu. |
Poniższy przykład ilustruje działanie paska stanu. Okno najwyższego poziomu zawiera VBox z dwoma wierszami. W górnym wierszu znajduje się stały widżet, w którym znajduje się etykieta, widżet Wejście i przycisk. Natomiast w dolnym rzędzie dodano widżet gtk.Statusbar.
Aby wysłać wiadomość do paska stanu, należy pobrać jej identyfikator kontekstu.
id1 = self.bar.get_context_id("Statusbar")
Sygnał „kliknięcia” obiektu Button jest połączony z funkcją wywołania zwrotnego, za pomocą której na pasku stanu jest przekazywany komunikat. Sygnał „aktywuj” jest emitowany po naciśnięciu klawisza Enter wewnątrz widżetu Wejście. Ten widget jest połączony z innym wywołaniem zwrotnym.
btn.connect("clicked", self.on_clicked, id1)
txt.connect("activate", self.on_entered, id1)
Oba wywołania zwrotne używają push() metoda flashowania wiadomości w obszarze powiadomień.
Przykład
Przestrzegaj następującego kodu -
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()
Po wykonaniu powyższy kod wyświetli następujące dane wyjściowe -
Spróbuj wpisać tekst w polu tekstowym i naciśnij klawisz Enter, aby zobaczyć komunikat „wprowadzono tekst” na pasku stanu.