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的正则表达式re模块的常用方法
Mar 09 Python
Python打印斐波拉契数列实例
Jul 07 Python
Python使用progressbar模块实现的显示进度条功能
May 31 Python
[原创]Python入门教程4. 元组基本操作
Oct 31 Python
Python面向对象程序设计类变量与成员变量、类方法与成员方法用法分析
Apr 12 Python
使用Python OpenCV为CNN增加图像样本的实现
Jun 10 Python
django之使用celery-把耗时程序放到celery里面执行的方法
Jul 12 Python
Python 变量的创建过程详解
Sep 02 Python
Scrapy中如何向Spider传入参数的方法实现
Sep 28 Python
python中的测试框架
Nov 13 Python
python 装饰器重要在哪
Feb 14 Python
Python异常类型以及处理方法汇总
Jun 05 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中Stream(流)
2015/06/08 PHP
详解PHP神奇又有用的Trait
2019/03/25 PHP
laradock环境docker-compose操作详解
2019/07/29 PHP
windows系统php环境安装swoole具体步骤
2021/03/04 PHP
个人总结的一些关于String、Function、Array的属性和用法
2007/01/10 Javascript
JavaScript中json对象和string对象之间相互转化
2012/12/26 Javascript
JS中令人发指的valueOf方法介绍
2013/02/22 Javascript
JS 实现导航栏悬停效果(续2)
2013/09/24 Javascript
js中的preventDefault与stopPropagation详解
2014/01/29 Javascript
JavaScript中使用Object.create()创建对象介绍
2014/12/30 Javascript
jQuery解析json数据实例分析
2015/11/24 Javascript
浅谈JavaScript 标准对象
2016/06/02 Javascript
Vue.js上下滚动加载组件的实例代码
2017/07/17 Javascript
vue组件生命周期详解
2017/11/07 Javascript
jQuery插件jsonview展示json数据
2018/05/26 jQuery
原生js实现淘宝放大镜效果
2020/10/28 Javascript
ES6基础之 Promise 对象用法实例详解
2019/08/22 Javascript
[10:24]郎朗助力完美“圣”典,天籁交织奏响序曲
2016/12/18 DOTA
Python入门_浅谈字符串的分片与索引、字符串的方法
2017/05/16 Python
Python使用爬虫抓取美女图片并保存到本地的方法【测试可用】
2018/08/30 Python
Django如何自定义分页
2018/09/25 Python
详解Ubuntu16.04安装Python3.7及其pip3并切换为默认版本
2019/02/25 Python
Flask框架模板继承实现方法分析
2019/07/31 Python
Python全局锁中如何合理运用多线程(多进程)
2019/11/06 Python
使用layui框架实现点击左侧导航切换右侧内容且右侧选项卡跟随变化的效果
2020/11/10 HTML / CSS
Carter’s OshKosh加拿大:购买婴幼儿服装和童装
2018/11/27 全球购物
会计专业大学生职业生涯规划范文
2014/01/11 职场文书
特色蛋糕店创业计划书
2014/01/28 职场文书
中队活动总结
2014/08/27 职场文书
装修活动策划方案
2014/08/27 职场文书
招标保密承诺书
2015/01/20 职场文书
村党组织公开承诺书
2015/04/30 职场文书
消防演习感想
2015/08/10 职场文书
2016春季运动会前导词
2015/11/25 职场文书
修改MySQL的默认密码的四种小方法
2021/05/26 MySQL
MySQL索引失效场景及解决方案
2022/07/23 MySQL