PyQt5 - QStatusBar 小部件

  • 简述

    QMainWindow 对象在底部保留一个水平条作为status bar. 它用于显示永久或上下文状态信息。
    状态指示器分为三种类型 -
    Temporary− 短暂占据大部分状态栏。例如,用于解释工具提示文本或菜单条目。
    Normal− 占据状态栏的一部分,可能被临时消息隐藏。例如,用于在文字处理器中显示页码和行号。
    Permanent- 它从不隐藏。用于重要的模式指示。例如,某些应用程序会在状态栏中放置一个 Caps Lock 指示器。
    QMainWindow 的状态栏由 statusBar() 函数检索。setStatusBar() 函数激活它。
    
    self.statusBar = QStatusBar()
    self.setStatusBar(self.statusBar)
    
  • QStatusBar 类的方法

    序号 方法和描述
    1
    addWidget()
    在状态栏中添加给定的小部件对象
    2
    addPermanentWidget()
    在状态栏中永久添加给定的小部件对象
    3
    showMessage()
    在指定的时间间隔内在状态栏中显示一条临时消息
    4
    clearMessage()
    删除显示的任何临时消息
    5
    removeWidget()
    从状态栏中删除指定的小部件
  • 例子

    在下面的例子中,一个顶级 QMainWindow 有一个菜单栏和一个 QTextEdit 对象作为它的中心部件。
    如上所述,Window 的状态栏被激活。
    菜单的触发信号被传递给 processtrigger() 槽函数。如果触发“显示”操作,它会在状态栏中显示一条临时消息 -
    
    if (q.text() == "show"):
       self.statusBar.showMessage(q.text()+" is clicked",2000)
    
    消息将在 2000 毫秒(2 秒)后被删除。如果触发了“添加”操作,则会添加一个按钮小部件。
    
    if q.text() == "add":
       self.statusBar.addWidget(self.b)
    
    删除操作将从状态栏中删除按钮。
    
    if q.text() == "remove":
       self.statusBar.removeWidget(self.b)
       self.statusBar.show()
    
    完整的代码如下 -
    
    import sys
    from PyQt5.QtCore import *
    from PyQt5.QtGui import *
    from PyQt5.QtWidgets 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()
    
    上面的代码产生以下输出。状态栏显示所选菜单按钮的标题 -
    QStatusBar 小部件输出