PyQt - Widget QStatusBar

O objeto QMainWindow reserva uma barra horizontal na parte inferior como o status bar. É usado para exibir informações de status permanentes ou contextuais.

Existem três tipos de indicadores de status -

  • Temporary- Ocupa brevemente a maior parte da barra de status. Por exemplo, usado para explicar textos de dicas de ferramentas ou entradas de menu.

  • Normal- Ocupa parte da barra de status e pode estar oculto por mensagens temporárias. Por exemplo, usado para exibir a página e o número da linha em um processador de texto.

  • Permanent- Nunca está escondido. Usado para indicações importantes do modo. Por exemplo, alguns aplicativos colocam um indicador Caps Lock na barra de status.

A barra de status de QMainWindow é recuperada pela função statusBar (). A função setStatusBar () o ativa.

self.statusBar = QStatusBar()
self.setStatusBar(self.statusBar)

Métodos da classe QStatusBar

Sr. Não. Métodos e Descrição
1

addWidget()

Adiciona o objeto de widget fornecido na barra de status

2

addPermanentWidget()

Adiciona o objeto de widget fornecido na barra de status permanentemente

3

showMessage()

Mostra uma mensagem temporária na barra de status por um intervalo de tempo especificado

4

clearMessage()

Remove qualquer mensagem temporária exibida

5

removeWidget()

Remove o widget especificado da barra de status

Exemplo

No exemplo a seguir, um QMainWindow de nível superior possui uma barra de menus e um objeto QTextEdit como seu widget central.

A barra de status do Windows é ativada conforme explicado acima.

O sinal disparado do menu é passado para a função de slot processtrigger (). Se a ação 'mostrar' for acionada, será exibida uma mensagem temporária na barra de status como -

if (q.text() == "show"):
   self.statusBar.showMessage(q.text()+" is clicked",2000)

A mensagem será apagada após 2.000 milissegundos (2 segundos). Se a ação 'adicionar' for acionada, um widget de botão será adicionado.

if q.text() == "add":
   self.statusBar.addWidget(self.b)

A ação Remover removerá o botão da barra de status.

if q.text() == "remove":
   self.statusBar.removeWidget(self.b)
   self.statusBar.show()

O código completo é o seguinte -

import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *

class statusdemo(QMainWindow):
   def __init__(self, parent = None):
      super(statusdemo, self).__init__(parent)
		
      bar = self.menuBar()
      file = bar.addMenu("File")
      file.addAction("show")
      file.addAction("add")
      file.addAction("remove")
      file.triggered[QAction].connect(self.processtrigger)
      self.setCentralWidget(QTextEdit())
		
      self.statusBar = QStatusBar()
      self.b = QPushButton("click here")
      self.setWindowTitle("QStatusBar Example")
      self.setStatusBar(self.statusBar)
		
   def processtrigger(self,q):
	
      if (q.text() == "show"):
         self.statusBar.showMessage(q.text()+" is clicked",2000)
			
      if q.text() == "add":
         self.statusBar.addWidget(self.b)
			
      if q.text() == "remove":
         self.statusBar.removeWidget(self.b)
         self.statusBar.show()
			
def main():
   app = QApplication(sys.argv)
   ex = statusdemo()
   ex.show()
   sys.exit(app.exec_())
	
if __name__ == '__main__':
   main()

O código acima produz a seguinte saída -