PyQt - Widget QStatusBar

El objeto QMainWindow reserva una barra horizontal en la parte inferior como status bar. Se utiliza para mostrar información de estado permanente o contextual.

Hay tres tipos de indicadores de estado:

  • Temporary- Ocupa brevemente la mayor parte de la barra de estado. Por ejemplo, se utiliza para explicar textos de información sobre herramientas o entradas de menú.

  • Normal- Ocupa parte de la barra de estado y puede estar oculto por mensajes temporales. Por ejemplo, se utiliza para mostrar la página y el número de línea en un procesador de texto.

  • Permanent- Nunca se oculta. Se utiliza para indicaciones de modo importantes. Por ejemplo, algunas aplicaciones colocan un indicador de bloqueo de mayúsculas en la barra de estado.

La barra de estado de QMainWindow es recuperada por la función statusBar (). La función setStatusBar () lo activa.

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

Métodos de la clase QStatusBar

No Señor. Métodos y descripción
1

addWidget()

Agrega el objeto de widget dado en la barra de estado

2

addPermanentWidget()

Agrega el objeto de widget dado en la barra de estado de forma permanente

3

showMessage()

Muestra un mensaje temporal en la barra de estado durante un intervalo de tiempo especificado

4

clearMessage()

Elimina cualquier mensaje temporal que se muestre

5

removeWidget()

Elimina el widget especificado de la barra de estado

Ejemplo

En el siguiente ejemplo, una QMainWindow de nivel superior tiene una barra de menú y un objeto QTextEdit como su widget central.

La barra de estado de la ventana se activa como se explicó anteriormente.

La señal activada del menú se pasa a la función de ranura processtrigger (). Si se activa la acción 'mostrar', muestra un mensaje temporal en la barra de estado como:

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

El mensaje se borrará después de 2000 milisegundos (2 segundos). Si se activa la acción 'agregar', se agrega un widget de botón.

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

La acción Eliminar eliminará el botón de la barra de estado.

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

El código completo es el siguiente:

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()

El código anterior produce la siguiente salida: