写在后面
放在状态栏处的进度条。
本想放在主界面,然而没找到相干代码。
代码
# -*- 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)显示和暗藏性能