放在状态栏处的进度条。
本想放在主界面,可是没找到相关代码。html
# -*- coding: utf-8 -*- from PyQt5 import QtCore, QtWidgets from PyQt5.QtWidgets import QProgressBar, QLabel, QApplication, QMainWindow from PyQt5.QtCore import QBasicTimer import sys class 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/115557955python
python3.x+pyqt5实现主窗口状态栏里(嵌入)显示进度条python3.x
python中pyqt5的进度条--python实战(十)工具