PyQt - QStatusBar Widget

L'oggetto QMainWindow riserva una barra orizzontale nella parte inferiore come status bar. Viene utilizzato per visualizzare informazioni sullo stato permanenti o contestuali.

Esistono tre tipi di indicatori di stato:

  • Temporary- Occupa brevemente la maggior parte della barra di stato. Ad esempio, utilizzato per spiegare i testi dei suggerimenti o le voci di menu.

  • Normal- Occupa parte della barra di stato e può essere nascosto da messaggi temporanei. Ad esempio, utilizzato per visualizzare la pagina e il numero di riga in un elaboratore di testi.

  • Permanent- Non è mai nascosto. Utilizzato per importanti indicazioni di modalità. Ad esempio, alcune applicazioni inseriscono un indicatore BLOC MAIUSC nella barra di stato.

La barra di stato di QMainWindow viene recuperata dalla funzione statusBar (). La funzione setStatusBar () lo attiva.

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

Metodi della classe QStatusBar

Sr.No. Metodi e descrizione
1

addWidget()

Aggiunge l'oggetto widget specificato nella barra di stato

2

addPermanentWidget()

Aggiunge permanentemente l'oggetto widget dato nella barra di stato

3

showMessage()

Visualizza un messaggio temporaneo nella barra di stato per un intervallo di tempo specificato

4

clearMessage()

Rimuove qualsiasi messaggio temporaneo visualizzato

5

removeWidget()

Rimuove il widget specificato dalla barra di stato

Esempio

Nell'esempio seguente, una QMainWindow di livello superiore ha una barra dei menu e un oggetto QTextEdit come widget centrale.

La barra di stato della finestra viene attivata come spiegato sopra.

Il segnale attivato dal menu viene passato alla funzione slot processtrigger (). Se viene attivata l'azione "mostra", viene visualizzato un messaggio temporaneo nella barra di stato come:

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

Il messaggio verrà cancellato dopo 2000 millisecondi (2 sec). Se viene attivata l'azione "aggiungi", viene aggiunto un widget pulsante.

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

L'azione Rimuovi rimuoverà il pulsante dalla barra di stato.

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

Il codice completo è il seguente:

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

Il codice precedente produce il seguente output: