写在后面

放在状态栏处的进度条。
本想放在主界面,然而没找到相干代码。

代码

# -*- coding: utf-8 -*-from PyQt5 import QtCore, QtWidgetsfrom PyQt5.QtWidgets import QProgressBar, QLabel, QApplication, QMainWindowfrom PyQt5.QtCore import QBasicTimerimport sysclass Ui_MainWindow(QMainWindow):    def __init__(self,parent=None):        super(Ui_MainWindow,self).__init__(parent)        self.setupUi()        #这里能够定义一些为以后类所用的全局变量        self.filepath = ''    def setupUi(self):        #设置窗口对象名称        self.setObjectName("MainWindow")        #设置窗口大小        self.resize(800, 600)        #定义按钮        self.startButton = QtWidgets.QPushButton(self)        # 设置按钮对象名称(不是按钮显示内容)        self.startButton.setObjectName("pred")        #设置按钮地位        self.startButton.setGeometry(QtCore.QRect(10, 300, 93, 28))        #设置按钮显示内容        self.startButton.setText("开始")        #为按钮绑定事件(点击按钮时就触发)        self.startButton.clicked.connect(self.predict)        #这里我绑定的是具体的业务处理函数,如果你想点击按钮就开始走进度条,则用上面这句        # 也能够间接为按钮绑定事件,点击按钮时,就开始走进度条        # self.startButton.clicked.connect(self.onStart)        #定义状态栏        self.statusbar = QtWidgets.QStatusBar(self)        # 将状态栏设置为以后窗口的状态栏        self.setStatusBar(self.statusbar)        # 设置状态栏的对象名称        self.statusbar.setObjectName("statusbar")        #设置状态栏款式        self.statusbar.setStyleSheet('QStatusBar::item {border: none;}')        # 定义文本标签        self.statusLabel = QLabel()        # 设置文本标签显示内容        self.statusLabel.setText("     筹备     ")        #定义程度进度条        self.progressBar = QProgressBar()        # 设置进度条的范畴,参数1为最小值,参数2为最大值(能够调得更大,比方1000        self.progressBar.setRange(0, 100)        # 设置进度条的初始值        self.progressBar.setValue(0)        #设置定时器(走进度条的时候须要应用,否则进度条不会变动,而是固定不变        self.timer = QBasicTimer()        self.step = 0        # 往状态栏中增加组件(stretch应该是拉伸组件宽度)        self.statusbar.addPermanentWidget(self.startButton, stretch=0)        self.statusbar.addPermanentWidget(self.statusLabel, stretch=2)        self.statusbar.addPermanentWidget(self.progressBar, stretch=10)        #其余界面设置        self.retranslateUi()        QtCore.QMetaObject.connectSlotsByName(self)    def retranslateUi(self):        _translate = QtCore.QCoreApplication.translate        #设置窗口题目        self.setWindowTitle(_translate("MainWindow", "testLoading"))    #   每一个QObject对象或其子对象都有一个QObject.timerEvent办法。    #   为了响应定时器的超时事件,须要重写进度条的timerEvent办法。    def timerEvent(self, event):        if self.step >= 100:            self.timer.stop()            # 批改文本标签显示内容            self.statusLabel.setText("     预测实现    ")            # 启用按钮            self.startButton.setEnabled(True)            # 批改按钮显示内容            self.startButton.setText("开始")            return        #累计步数        self.step = self.step + 1        #批改进度条的值        self.progressBar.setValue(self.step)    def onStart(self):        # 批改文本标签显示内容        self.statusLabel.setText("     请稍后     ")        #禁用按钮        self.startButton.setEnabled(False)        #批改按钮显示内容        self.startButton.setText("预测中...")        #应用定时器的start()办法启动定时器,激活进度条。其中:        # 参数1:超时工夫;参数2:到了超时工夫后,接管定时器触发超时事件的对象。        self.timer.start(100, self)    #解决具体的业务逻辑,如调用深度学习模型进行预测。    def predict(self):        self.onStart()        ################用print模仿模型的调用####################        print('predict.......')if __name__ == '__main__':    app = QApplication(sys.argv)    ui = Ui_MainWindow()    ui.show()    sys.exit(app.exec_())

成果动图

如果看不到效果图,请返回此页面查看https://blog.csdn.net/qq_42772612/article/details/115557955

参考

python3.x+pyqt5实现主窗口状态栏里(嵌入)显示进度条

PyQt5:QProgressBar进度条(26)

PyQt5教程-14-进度条

python中pyqt5的进度条--python实战(十)

PyQt5 QProgressBar进度条的用法

PyQt5-菜单栏工具栏状态栏的应用(QMenuBar、QToolBar、QStatusBar)

pyqt5 实现在别的窗口弹出进度条

PyQt5 实现状态栏(statusBar)显示和暗藏性能