PyQt5 - QStatusBar 小部件
QMainWindow 对象在底部保留一个水平条作为状态栏。 它用于显示永久或上下文状态信息。
状态指示器分为三种类型 −
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 对象作为它的中心部件。
如上所述,窗口的状态栏被激活。
菜单的触发信号被传递给 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()
上面的代码产生以下输出。 状态栏显示所选菜单按钮的标题 −