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实现系统状态监测和故障转移实例方法
Nov 18 Python
从零学python系列之新版本导入httplib模块报ImportError解决方案
May 23 Python
Python原始字符串与Unicode字符串操作符用法实例分析
Jul 22 Python
python验证码识别教程之滑动验证码
Jun 04 Python
Python实现输入二叉树的先序和中序遍历,再输出后序遍历操作示例
Jul 27 Python
详解如何用django实现redirect的几种方法总结
Nov 22 Python
详解使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件
Aug 23 Python
使用turtle绘制五角星、分形树
Oct 06 Python
解决python web项目意外关闭,但占用端口的问题
Dec 17 Python
django-orm F对象的使用 按照两个字段的和,乘积排序实例
May 18 Python
python爬虫基础知识点整理
Jun 02 Python
装上这 14 个插件后,PyCharm 真的是无敌的存在
Jan 11 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 单引号与双引号的区别
2009/11/24 PHP
PHP生成随机密码方法汇总
2015/08/27 PHP
PHP中的使用curl发送请求(GET请求和POST请求)
2017/02/08 PHP
PHP读取并输出XML文件数据的简单实现方法
2017/12/22 PHP
php进行md5加密简单实例方法
2019/09/19 PHP
让iframe自适应高度(支持XHTML,支持FF)
2007/07/24 Javascript
HTML node相关的一些资料整理
2010/01/01 Javascript
jquery中交替点击事件toggle方法的使用示例
2013/12/08 Javascript
js中typeof的用法汇总
2013/12/12 Javascript
JavaScript中的Math.sin()方法使用详解
2015/06/15 Javascript
基于JS实现的倒计时程序实例
2015/07/24 Javascript
iframe跨域通信封装详解
2015/08/11 Javascript
JavaScript实现将文本框的值插入指定位置的方法
2015/08/13 Javascript
使用堆实现Top K算法(JS实现)
2015/12/25 Javascript
javascript每日必学之运算符
2016/02/16 Javascript
React Router基础使用
2017/01/17 Javascript
JavaScript队列结构Queue实现过程解析
2020/03/07 Javascript
vue 解决addRoutes多次添加路由重复的操作
2020/08/04 Javascript
详解Python中最难理解的点-装饰器
2017/04/03 Python
python中对_init_的理解及实例解析
2019/10/11 Python
python Cartopy的基础使用详解
2020/11/01 Python
英国鲜花速递:Serenata Flowers
2018/04/03 全球购物
S’well Bottle保温杯官网:绝缘不锈钢水瓶
2018/05/09 全球购物
New Balance比利时官方网站:购买鞋子和服装
2021/01/15 全球购物
文明风采获奖感言
2014/02/18 职场文书
村干部承诺书
2014/03/28 职场文书
幼儿园教师演讲稿
2014/05/06 职场文书
个人四风问题整改措施思想汇报
2014/10/04 职场文书
2014年团委工作总结
2014/11/13 职场文书
骨干教师事迹材料
2014/12/17 职场文书
努力学习保证书
2015/02/26 职场文书
大学生入党自荐书
2015/03/05 职场文书
欠条范文
2015/07/03 职场文书
工伤事故赔偿协议书
2015/08/06 职场文书
如何用threejs实现实时多边形折射
2021/05/07 Javascript
nginx搭建NFS网络文件系统
2022/04/14 Servers