当前位置: 首页 > 文档资料 > PyQt 中文教程 >

QStatusBar

优质
小牛编辑
136浏览
2023-12-01

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

有三种类型的状态指标 -

  • Temporary - 简要占据大部分状态栏。 例如,用于解释工具提示文本或菜单条目。

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

  • Permanent - 永远不会隐藏。 用于重要模式指示。 例如,某些应用程序在状态栏中放置了Caps Lock指示器。

QMainWindow的状态栏由statusBar()函数检索。 setStatusBar()函数激活它。

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

QStatusBar类的方法

Sr.No.方法和描述
1

addWidget()

在状态栏中添加给定的窗口小部件对象

2

addPermanentWidget()

永久地在状态栏中添加给定的窗口小部件对象

3

showMessage()

在状态栏中显示指定时间间隔的临时消息

4

clearMessage()

删除正在显示的任何临时消息

5

removeWidget()

从状态栏中删除指定的小部件

例子 (Example)

在以下示例中,顶级QMainWindow具有菜单栏和QTextEdit对象作为其中心窗口小部件。

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

菜单的触发信号传递给processtrigger()槽功能。 如果触发“show”操作,它会在状态栏中显示一条临时消息,如下所示:

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输出