PyQt QStatusBar小部件
QMainWindow对象在底部保留了一条水平栏作为 状态栏 。它用于显示永久或上下文相关的状态信息。
有三种类型的状态指示器−
- 临时 − 短暂地占据状态栏的大部分空间。例如,用于解释工具提示文本或菜单项。
-
正常 − 占据状态栏的一部分,并且可能会被临时消息隐藏。例如,在文字处理器中显示页面和行号。
-
永久 − 它永远不会被隐藏。用于重要的模式指示。例如,某些应用程序在状态栏中放置了一个大写锁定指示器。
可以通过statusBar()函数检索到QMainWindow的状态栏。setStatusBar()函数用于激活它。
self.statusBar = QStatusBar()
self.setStatusBar(self.statusBar)
QStatusBar 类的方法
序号 | 方法和描述 |
---|---|
1 | addWidget() 将给定的小部件对象添加到状态栏 |
2 | addPermanentWidget() 将给定的小部件对象永久地添加到状态栏 |
3 | showMessage() 在状态栏中显示一个临时消息,持续一段指定的时间间隔 |
4 | clearMessage() 移除正在显示的任何临时消息 |
5 | removeWidget() 从状态栏中移除指定的小部件 |
示例
在下面的示例中,一个顶级的QMainWindow拥有一个菜单栏和一个QTextEdit对象作为其中央部件。
窗口的状态栏如上所述被激活。
菜单的触发信号将传递给processtrigger()槽函数。如果触发了”show”操作,它将在状态栏中显示一条临时消息,如下所示-
if (q.text() == "show"):
self.statusBar.showMessage(q.text()+" is clicked",2000)
消息将在2000毫秒(2秒)后被删除。如果触发了“add”操作,将会添加一个按钮小部件。
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()
上述代码产生以下输出−