例子
在下面的例子中,一个顶级 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()
上面的代码产生以下输出。状态栏显示所选菜单按钮的标题 -