PyGTK - Statusleistenklasse
Ein Benachrichtigungsbereich, normalerweise am unteren Rand eines Fensters, wird als Statusleiste bezeichnet. In der Statusleiste kann jede Art von Statusänderungsnachricht angezeigt werden. Es hat auch einen Griff, mit dem die Größe geändert werden kann.
Das Widget gtk.Statusbar verwaltet einen Stapel von Nachrichten. Daher wird eine neue Nachricht über der aktuellen Nachricht angezeigt. Wenn es angezeigt wird, wird die frühere Nachricht wieder angezeigt. Die Quelle der Nachricht muss durch context_id identifiziert werden, um sie eindeutig zu identifizieren.
Das Folgende ist der Konstruktor des Widgets gtk.Statusbar -
bar = gtk.Statusbar()
Im Folgenden sind die Methoden der Klasse gtk.Statusbar aufgeführt:
Statusbar.push(context_id, text) - Dadurch wird eine neue Nachricht auf den Stapel einer Statusleiste verschoben.
Statusbar.pop(context_id) - Dadurch wird die oberste Nachricht mit der angegebenen entfernt context_id vom Stapel der Statusleiste.
Die folgenden Signale werden vom Statusleisten-Widget ausgegeben:
Text-Popped | Dies wird ausgegeben, wenn eine Nachricht aus dem Nachrichtenleistenstapel der Statusleiste entfernt wird. |
Text-Push | Dies wird ausgegeben, wenn eine Nachricht zum Statusleisten-Nachrichtenstapel hinzugefügt wird. |
Das folgende Beispiel zeigt die Funktionsweise der Statusleiste. Das Toplevel-Fenster enthält eine VBox mit zwei Zeilen. Die obere Reihe enthält ein festes Widget, in das eine Beschriftung, ein Eintrags-Widget und eine Schaltfläche eingefügt werden. In der unteren Zeile wird ein Widget "gtk.Statusbar" hinzugefügt.
Um eine Nachricht an die Statusleiste zu senden, muss deren context_id abgerufen werden.
id1 = self.bar.get_context_id("Statusbar")
Das 'geklickte' Signal des Button-Objekts ist mit einer Rückruffunktion verbunden, über die eine Nachricht in die Statusleiste gedrückt wird. Das Aktivierungssignal wird ausgegeben, wenn die Eingabetaste im Eingabe-Widget gedrückt wird. Dieses Widget ist mit einem anderen Rückruf verbunden.
btn.connect("clicked", self.on_clicked, id1)
txt.connect("activate", self.on_entered, id1)
Beide Rückrufe verwenden push() Methode zum Flashen der Nachricht im Benachrichtigungsbereich.
Beispiel
Beachten Sie den folgenden Code -
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()
Bei der Ausführung zeigt der obige Code die folgende Ausgabe an:
Versuchen Sie, in das Textfeld einzugeben, und drücken Sie die Eingabetaste, um die Meldung "Text eingegeben" in der Statusleiste anzuzeigen.