PyQt - QStatusBar 控件



QMainWindow 对象在底部保留了一条水平条作为状态栏。它用于显示永久或上下文状态信息。

状态指示器有三种类型:

  • 临时 - 短暂占用大部分状态栏。例如,用于解释工具提示文本或菜单项。

  • 普通 - 占用状态栏的一部分,可能被临时消息隐藏。例如,用于在文字处理器中显示页面和行号。

  • 永久 - 从不隐藏。用于重要的模式指示。例如,一些应用程序在状态栏中放置一个 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 对象作为其中心控件。

窗口的状态栏如上所述被激活。

菜单的 triggered 信号传递给 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 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()

以上代码产生以下输出:

QStatusBar Widget Output
广告