PyQt - Widget QStatusBar

L'objet QMainWindow réserve une barre horizontale en bas comme status bar. Il est utilisé pour afficher des informations d'état permanentes ou contextuelles.

Il existe trois types d'indicateurs d'état -

  • Temporary- occupe brièvement la plupart de la barre d'état. Par exemple, utilisé pour expliquer les textes des info-bulles ou les entrées de menu.

  • Normal- Occupe une partie de la barre d'état et peut être masqué par des messages temporaires. Par exemple, utilisé pour afficher la page et le numéro de ligne dans un traitement de texte.

  • Permanent- Ce n'est jamais caché. Utilisé pour les indications de mode importantes. Par exemple, certaines applications mettent un indicateur de verrouillage des majuscules dans la barre d'état.

La barre d'état de QMainWindow est récupérée par la fonction statusBar (). La fonction setStatusBar () l'active.

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

Méthodes de la classe QStatusBar

N ° Sr. Méthodes et description
1

addWidget()

Ajoute l'objet widget donné dans la barre d'état

2

addPermanentWidget()

Ajoute définitivement l'objet widget donné dans la barre d'état

3

showMessage()

Affiche un message temporaire dans la barre d'état pendant un intervalle de temps spécifié

4

clearMessage()

Supprime tout message temporaire affiché

5

removeWidget()

Supprime le widget spécifié de la barre d'état

Exemple

Dans l'exemple suivant, un QMainWindow de niveau supérieur a une barre de menus et un objet QTextEdit comme widget central.

La barre d'état de la fenêtre est activée comme expliqué ci-dessus.

Le signal déclenché par le menu est transmis à la fonction slot processtrigger (). Si l'action 'show' est déclenchée, elle affiche un message temporaire dans la barre d'état comme -

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

Le message sera effacé après 2000 millisecondes (2 s). Si l'action «ajouter» est déclenchée, un widget bouton est ajouté.

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

Supprimer l'action supprimera le bouton de la barre d'état.

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

Le code complet est le suivant -

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

Le code ci-dessus produit la sortie suivante -