共计 2838 个字符,预计需要花费 8 分钟才能阅读完成。
写在后面
放在状态栏处的进度条。
本想放在主界面,然而没找到相干代码。
代码
# -*- 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/115557955
参考
python3.x+pyqt5 实现主窗口状态栏里(嵌入)显示进度条
PyQt5:QProgressBar 进度条 (26)
PyQt5 教程 -14- 进度条
python 中 pyqt5 的进度条 –python 实战(十)
PyQt5 QProgressBar 进度条的用法
PyQt5- 菜单栏工具栏状态栏的应用(QMenuBar、QToolBar、QStatusBar)
pyqt5 实现在别的窗口弹出进度条
PyQt5 实现状态栏 (statusBar)显示和暗藏性能
正文完