Python3与PyQt5实现主窗口状态栏嵌入进度条的两种布局方案
本文介绍在Python3环境下使用PyQt5库,如何在主窗口状态栏中嵌入并显示进度条。详细讲解两种布局方式:将进度条置于状态栏右端(使用addPermanentWidget)和左端(自定义QStatusBar对象并调整拉伸因子)。包含完整代码示例及界面效果说明,帮助开发者快速实现状态栏信息展示功能。
状态栏右端嵌入进度条实现
首先展示第一种实现方案,即如何将进度条嵌入到主窗口状态栏的右端。
具体代码如下,该方法利用默认的状态栏机制,将进度条组件固定显示在状态栏的最右侧区域:
from PyQt5.QtWidgets import QMainWindow, QProgressBar, QApplication, QLabel
import sys
class SampleBar(QMainWindow):
"""Main Application"""
def __init__(self, parent = None):
print('Starting the main Application')
super(SampleBar, self).__init__(parent)
self.initUI()
def initUI(self):
# Pre Params:
self.setMinimumSize(800, 600)
# File Menus & Status Bar:
self.statusBar().showMessage('准备中...')
self.progressBar = QProgressBar()
self.label = QLabel()
self.label2 = QLabel()
self.label.setText("正在计算: ")
self.label2.setText("正在计算: ")
self.statusBar().addPermanentWidget(self.label)
self.statusBar().addPermanentWidget(self.label2)
self.statusBar().addPermanentWidget(self.progressBar)
# self.statusBar().addWidget(self.progressBar)
# This is simply to show the bar
self.progressBar.setGeometry(0, 0, 100, 5)
self.progressBar.setRange(0, 500) # 设置进度条的范围
self.progressBar.setValue(100)
if __name__ == '__main__':
app = QApplication(sys.argv)
main2 = SampleBar()
main2.show()
sys.exit(app.exec_())
运行上述代码后,界面效果如图1中红色方框所示,进度条位于状态栏右侧。

图1
状态栏左端嵌入进度条实现
接下来展示第二种实现方案,即如何将进度条嵌入到主窗口状态栏的左端。
具体代码如下,通过自定义QStatusBar对象并设置样式,可以实现进度条在左侧的显示:
from PyQt5.QtWidgets import QMainWindow, QProgressBar, QApplication, QLabel, \
QStatusBar, QPushButton
import sys
class SampleBar(QMainWindow):
"""Main Application"""
def __init__(self, parent = None):
# print('Starting the main Application')
super(SampleBar, self).__init__(parent)
self.initUI()
def initUI(self):
# Pre Params:
self.setMinimumSize(800, 600)
# File Menus & Status Bar:
self.statusBar = QStatusBar()
self.statusBar.setStyleSheet('QStatusBar::item {border: none;}')
self.setStatusBar(self.statusBar)
self.statusBar.showMessage('准备')
self.progressBar = QProgressBar()
self.pushbutton = QPushButton("点这里")
self.label = QLabel()
self.label2 = QLabel()
self.label.setText("开始计算 ")
self.label2.setText("正在计算: ")
# self.statusBar.addWidget(self.label, 0)
self.statusBar.addPermanentWidget(self.label, stretch=2)
self.statusBar.addPermanentWidget(self.label2, stretch=0)
self.statusBar.addPermanentWidget(self.progressBar, stretch=4)
# self.statusBar().addWidget(self.progressBar)
# This is simply to show the bar
# self.progressBar.setGeometry(0, 0, 100, 5)
self.progressBar.setRange(0, 500) # 设置进度条的范围
self.progressBar.setValue(20)
if __name__ == '__main__':
app = QApplication(sys.argv)
main2 = SampleBar()
main2.show()
sys.exit(app.exec_())
运行上述代码后,界面效果如图2中红色方框所示,进度条位于状态栏左侧。

总结
以上介绍了在Python3.x结合PyQt5环境下,实现主窗口状态栏嵌入进度条的两种功能方法,希望能对读者有所帮助。如有任何疑问,欢迎留言,作者会及时回复。感谢大家对本站的支持! 如果本文对您有帮助,欢迎转载,请注明出处,谢谢!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













