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.