pyqt5 状态栏内的Qlabel更新进度状态,进度完成后清空
时间: 2024-11-26 16:20:55 浏览: 24
在PyQt5中,你可以创建一个状态栏(QStatusBar)并添加一个 QLabel 来显示进度。当需要更新进度时,可以利用信号槽机制(Signal-Slot)或者直接操作 QLabel 的 text 属性。下面是一个简单的例子:
```python
from PyQt5.QtWidgets import QApplication, QMainWindow, QStatusBar, QLabel, QVBoxLayout, QPushButton
class ProgressWindow(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.statusBar = QStatusBar()
self.setStatusBar(self.statusBar)
progress_label = QLabel("", self)
progress_label.setAlignment(Qt.AlignCenter)
progress_label.setFixedWidth(200) # 设置进度条宽度
layout = QVBoxLayout()
layout.addWidget(progress_label)
self.statusBar.addLayout(layout)
self.progress_button = QPushButton("开始", self)
self.progress_button.clicked.connect(self.start_progress)
self.setCentralWidget(self.progress_button)
def start_progress(self):
for i in range(101): # 进度范围从 0 到 100
progress_percent = i / 100
self.statusBar.showMessage(f"进度: {progress_percent * 100:.0f}%")
# 更新进度文字
progress_label.setText(f"进度: {i}%")
# 这里假设进度更新的时间足够短,如果需要动画效果,可以考虑使用QTimer
QApplication.processEvents() # 提交事件队列处理 UI 更新
time.sleep(0.01) # 暂停一段时间模拟进度
# 当进度完成时,清空状态栏
self.statusBar.clearMessage()
progress_label.setText("") # 或者设置为默认文本或其他形式的完成提示
if __name__ == "__main__":
app = QApplication([])
window = ProgressWindow()
window.show()
app.exec_()
```
在这个例子中,点击 "开始" 按钮后会启动一个模拟的进度条,每一步都通过 `setMessage` 和 `setText` 更新状态栏的文字。当进度达到 100% 时,就清除状态栏消息。
阅读全文