- PyQt5 教程
- PyQt5 - 首页
- PyQt5 - 简介
- PyQt5 - 新特性
- PyQt5 - Hello World
- PyQt5 - 主要类
- PyQt5 - 使用 Qt Designer
- PyQt5 - 信号与槽
- PyQt5 - 布局管理
- PyQt5 - 基本控件
- PyQt5 - QDialog 类
- PyQt5 - QMessageBox
- PyQt5 - 多文档界面
- PyQt5 - 拖放
- PyQt5 - 数据库操作
- PyQt5 - 绘图 API
- PyQt5 - BrushStyle 常量
- PyQt5 - QClipboard
- PyQt5 - QPixmap 类
- PyQt5 有用资源
- PyQt5 - 快速指南
- PyQt5 - 有用资源
- PyQt5 - 讨论
PyQt5 - 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 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()
以上代码产生以下输出。状态栏显示所选菜单按钮的标题:
pyqt_basic_widgets.htm
广告