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 -