PyGTK - Classe Statusbar
Uma área de notificação, geralmente na parte inferior de uma janela, é chamada de barra de status. Qualquer tipo de mensagem de mudança de status pode ser exibida na barra de status. Ele também tem uma alça com a qual pode ser redimensionado.
O widget gtk.Statusbar mantém uma pilha de mensagens. Portanto, a nova mensagem é exibida no topo da mensagem atual. Se for exibido, a mensagem anterior ficará visível novamente. A origem da mensagem deve ser identificada por context_id para identificá-la exclusivamente.
A seguir está o construtor do widget gtk.Statusbar -
bar = gtk.Statusbar()
A seguir estão os métodos da classe gtk.Statusbar -
Statusbar.push(context_id, text) - Isso coloca uma nova mensagem na pilha da barra de status.
Statusbar.pop(context_id) - Isso remove a mensagem principal com o especificado context_id da pilha da barra de status.
Os seguintes sinais são emitidos pelo widget Statusbar -
pop-pop | Isso é emitido quando uma mensagem é removida da pilha de mensagens da barra de status. |
texto empurrado | Isso é emitido quando uma mensagem é adicionada à pilha de mensagens da barra de status. |
O exemplo a seguir demonstra o funcionamento da Barra de status. A janela de nível superior contém um VBox com duas linhas. A linha superior possui um widget Fixo no qual um rótulo, um widget de Entrada e um botão são colocados. Enquanto que, na linha inferior, um widget gtk.Statusbar é adicionado.
Para enviar a mensagem para a barra de status, seu context_id precisa ser buscado.
id1 = self.bar.get_context_id("Statusbar")
O sinal 'clicado' do objeto Botão é conectado a uma função de retorno de chamada por meio da qual uma mensagem é enviada para a barra de status. E, o sinal 'ativar' é emitido quando a tecla Enter é pressionada dentro do widget de entrada. Este widget está conectado a outro retorno de chamada.
btn.connect("clicked", self.on_clicked, id1)
txt.connect("activate", self.on_entered, id1)
Ambos os retornos de chamada usam push() método para piscar a mensagem na área de notificação.
Exemplo
Observe o seguinte código -
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()
Após a execução, o código acima exibirá a seguinte saída -
Tente digitar na caixa de texto e pressione Enter para ver a mensagem de 'texto inserido' na barra de status.