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


Posted in Python onJune 18, 2019

要求:在导入视频的同时,利用caffe训练好的模型提取视频的特征,这个过程比较费时间,因此需要进度条,不然以为程序死掉了。

在条用进度条出现的问题有:

1、进度条窗口可以弹出但是没有进度条、label、button等

2、进度条窗口内容完整,但是进度条的进度没有更新

3、进度条以上问题解决了,但在进度条窗口close()后,程序出现未响应现象。

问题一:

区分show, exec_区别

问题二:

Thread.msleep(100),模拟100个文件

问题三:某个循环出了问题,while......

进度条对话框:

# -*- coding: utf-8 -*-
##set progressbar
 
from PyQt5.QtWidgets import QApplication,QWidget,QDialog,QLabel,QLineEdit,QProgressBar,\
  QPushButton,QVBoxLayout,QHBoxLayout,QGridLayout,QDialogButtonBox
from PyQt5.QtCore import Qt, QBasicTimer, QThread
import sys
 
class ProgressBar(QDialog):
  def __init__(self, fileIndex,filenum,parent = None):
    super(ProgressBar, self).__init__(parent)
 
    self.resize(350,100)
    self.setWindowTitle(self.tr("Processing progress"))
 
    self.TipLabel = QLabel(self.tr("Processing:" + "  " + str(fileIndex) + "/" + str(filenum)))
    self.FeatLabel = QLabel(self.tr("Extract feature:"))
    
    self.FeatProgressBar = QProgressBar(self)
    self.FeatProgressBar.setMinimum(0)
    self.FeatProgressBar.setMaximum(100) #总进程换算为100
self.FeatProgressBar.setValue(0) #进度条初始值为0
 
    TipLayout = QHBoxLayout()
    TipLayout.addWidget(self.TipLabel)
 
    FeatLayout = QHBoxLayout()
    FeatLayout.addWidget(self.FeatLabel)
    FeatLayout.addWidget(self.FeatProgressBar)
 
    # self.startButton = QPushButton('start',self)
    self.cancelButton = QPushButton('cancel', self)
    # self.cancelButton.setFocusPolicy(Qt.NoFocus)
 
    buttonlayout = QHBoxLayout()
    buttonlayout.addStretch(1)
    buttonlayout.addWidget(self.cancelButton)
    # buttonlayout.addStretch(1)
    # buttonlayout.addWidget(self.startButton)
 
    layout = QVBoxLayout()
    # layout = QGridLayout()
    layout.addLayout(FeatLayout)
    layout.addLayout(TipLayout)
    layout.addLayout(buttonlayout)
    self.setLayout(layout)
    self.show()
 
    # self.startButton.clicked.connect(self.setValue)
 
    self.cancelButton.clicked.connect(self.onCancel)
    # self.startButton.clicked.connect(self.onStart)
    # self.timer = QBasicTimer()
    # self.step = 0
 
  def setValue(self,value):
    self.FeatProgressBar.setValue(value) 
 
  def onCancel(self,event):
    self.close()
 
def main():
  app = QApplication(sys.argv)
  fileIndex = '3'  #当前正在处理第几个文件
  filenum = '10'  #文件总数,在label中显示
  progress = ProgressBar(fileIndex,filenum,0)
  progress.show()
  app.exec_()
 
if __name__ == '__main__':
  main()

在程序中弹出对对话框:

self.ProgressBar = ProgressDialog.ProgressBar(self.FileIndex,self.VideoNum)
for i in range(n*step,(n+1)*step):
    # time.sleep(0.05)
    self.ProgressBar.setValue(i+1) #更新进度条的值
    QThread.msleep(int(self.ratio*100)) #模拟文件传送,进度条可以一点点增加,而不是一下增加很多,也可以不需要
    QApplication.processEvents() #实时显示
self.ProgressBar.close() #记得关闭进度条

以上这篇pyqt5 实现在别的窗口弹出进度条就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python 序列化 pickle/cPickle模块使用介绍
Nov 30 Python
在Python的Django框架的视图中使用Session的方法
Jul 23 Python
Python爬虫爬取一个网页上的图片地址实例代码
Jan 16 Python
Python paramiko模块的使用示例
Apr 11 Python
python实现飞机大战游戏
Oct 26 Python
Python数据类型之Tuple元组实例详解
May 08 Python
python pygame实现五子棋小游戏
Oct 26 Python
详解Python3 中的字符串格式化语法
Jan 15 Python
Python读取表格类型文件代码实例
Feb 17 Python
在CentOS7下安装Python3教程解析
Jul 09 Python
利用python清除移动硬盘中的临时文件
Oct 28 Python
用Python自动清理电脑内重复文件,只要10行代码(自动脚本)
Jan 09 Python
Python弹出输入框并获取输入值的实例
Jun 18 #Python
python使用tkinter库实现五子棋游戏
Jun 18 #Python
Python基础学习之基本数据结构详解【数字、字符串、列表、元组、集合、字典】
Jun 18 #Python
python 弹窗提示警告框MessageBox的实例
Jun 18 #Python
python实现五子棋小程序
Jun 18 #Python
Python 实现还原已撤回的微信消息
Jun 18 #Python
PyQt4编程之让状态栏显示信息的方法
Jun 18 #Python
You might like
PHP中$_SERVER的详细参数与说明
2008/07/29 PHP
mayfish 数据入库验证代码
2010/04/30 PHP
自己在做项目过程中学到的PHP知识收集
2012/08/20 PHP
ThinkPHP3.1基础知识快速入门
2014/06/19 PHP
jQuery Mobile + PHP实现文件上传
2014/12/12 PHP
PHP随机数 C扩展随机数
2016/05/04 PHP
自制PHP框架之设计模式
2017/05/07 PHP
阿里云PHP SMS短信服务验证码发送方法
2017/07/11 PHP
将HTML自动转为JS代码
2006/06/26 Javascript
xmlHTTP实例
2006/10/24 Javascript
boxy基于jquery的弹出层对话框插件扩展应用 弹出层选择器
2010/11/21 Javascript
jQuery中的height innerHeight outerHeight区别示例介绍
2014/06/15 Javascript
js限制checkbox选中个数以限制六个为例
2014/07/15 Javascript
实现JavaScript的组成----BOM和DOM详解
2016/05/18 Javascript
更靠谱的H5横竖屏检测方法(js代码)
2016/09/13 Javascript
JS实现按钮控制计时开始和停止功能
2017/07/27 Javascript
vue插件vue-resource的使用笔记(小结)
2017/08/04 Javascript
使用cropper.js裁剪头像的实例代码
2017/09/29 Javascript
解决vuejs项目里css引用背景图片不能显示的问题
2018/09/13 Javascript
JavaScript原型对象原理与应用分析
2018/12/27 Javascript
小程序云开发教程如何使用云函数实现点赞功能
2019/05/18 Javascript
js的新生代垃圾回收知识点总结
2019/08/22 Javascript
Vue axios 将传递的json数据转为form data的例子
2019/10/29 Javascript
利用Python中的mock库对Python代码进行模拟测试
2015/04/16 Python
python开启多个子进程并行运行的方法
2015/04/18 Python
浅谈Python对内存的使用(深浅拷贝)
2018/01/17 Python
如何用python整理附件
2018/05/13 Python
Python实现的远程文件自动打包并下载功能示例
2019/07/12 Python
python 扩展print打印文件路径和当前时间信息的实例代码
2019/10/11 Python
css3实现一款模仿iphone样式的注册表单
2013/03/20 HTML / CSS
工商管理专业实习生自我鉴定
2013/09/29 职场文书
财务副总经理工作职责
2013/11/25 职场文书
测试工程师岗位职责
2013/11/28 职场文书
资源环境与城市管理专业推荐信
2013/11/30 职场文书
工业设计专业自荐书
2014/06/05 职场文书
公司授权委托书样本
2014/09/15 职场文书