Область уведомлений, обычно в нижней части окна, называется строкой состояния. Любой тип сообщения об изменении статуса может отображаться в строке состояния. У этого также есть власть, используя которую это может быть изменено.
Виджет gtk.Statusbar поддерживает стек сообщений. Следовательно, новое сообщение отображается поверх текущего сообщения. Если оно появилось, более раннее сообщение снова будет видно. Источник сообщения должен быть идентифицирован context_id, чтобы идентифицировать его однозначно.
Ниже приведен конструктор виджета gtk.Statusbar —
bar = gtk.Statusbar()
Ниже приведены методы класса gtk.Statusbar —
-
Statusbar.push (context_id, text) — это помещает новое сообщение в стек строки состояния.
-
Statusbar.pop (context_id) — удаляет верхнее сообщение с указанным context_id из стека строки состояния.
Statusbar.push (context_id, text) — это помещает новое сообщение в стек строки состояния.
Statusbar.pop (context_id) — удаляет верхнее сообщение с указанным context_id из стека строки состояния.
Следующие сигналы испускаются виджетом Statusbar —
текст-Popped | Это испускается, когда сообщение удаляется из стека сообщений строки состояния. |
текста толкнул | Это излучается, когда сообщение добавляется в стек сообщений строки состояния. |
В следующем примере демонстрируется функционирование строки состояния. Окно Toplevel содержит VBox с двумя строками. В верхней строке есть фиксированный виджет, в который помещаются метка, виджет «Ввод» и кнопка. Принимая во внимание, что в нижней строке добавлен виджет gtk.Statusbar.
Чтобы отправить сообщение в строку состояния, необходимо извлечь его context_id.
id1 = self.bar.get_context_id("Statusbar")
Сигнал «нажал» объекта Button связан с функцией обратного вызова, посредством которой в строку состояния помещается сообщение. И сигнал «активировать» испускается при нажатии клавиши Enter внутри виджета ввода. Этот виджет связан с другим обратным вызовом.
btn.connect("clicked", self.on_clicked, id1) txt.connect("activate", self.on_entered, id1)
Оба обратных вызова используют метод push () для прошивки сообщения в области уведомлений.
пример
Соблюдайте следующий код —
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()
После выполнения приведенный выше код будет отображать следующий вывод —
Попробуйте ввести текстовое поле и нажать клавишу «Ввод», чтобы увидеть текстовое сообщение в строке состояния.