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中使用socket发送HTTP请求数据接收不完整问题解决方法
Feb 04 Python
python基于phantomjs实现导入图片
May 13 Python
python中字符串变二维数组的实例讲解
Apr 03 Python
pyqt5 禁止窗口最大化和禁止窗口拉伸的方法
Jun 18 Python
python文字和unicode/ascll相互转换函数及简单加密解密实现代码
Aug 12 Python
python进阶之自定义可迭代的类
Aug 20 Python
PyCharm使用Docker镜像搭建Python开发环境
Dec 26 Python
Django 博客实现简单的全文搜索的示例代码
Feb 17 Python
python实现横向拼接图片
Mar 23 Python
python 3.8.3 安装配置图文教程
May 21 Python
浅谈numpy中np.array()与np.asarray的区别以及.tolist
Jun 03 Python
Python模拟登录requests.Session应用详解
Nov 17 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 AJAX实例根据邮编自动完成地址信息
2008/11/23 PHP
php中执行系统命令的方法
2015/03/21 PHP
php 把数字转换成汉字的代码
2015/07/21 PHP
PHP实现的进度条效果详解
2016/05/03 PHP
PHP实现的迪科斯彻(Dijkstra)最短路径算法实例
2017/09/16 PHP
JavaScript面向对象之静态与非静态类
2010/02/03 Javascript
关于flash遮盖div浮动层的解决方法
2010/07/17 Javascript
JavaScript学习笔记之获取当前目录的实现代码
2010/12/14 Javascript
基于jquery的3d效果实现代码
2011/03/23 Javascript
JS实现根据出生年月计算年龄
2014/01/10 Javascript
javascript实现日期按月份加减
2015/05/15 Javascript
javascript实现控制div颜色
2015/07/07 Javascript
javascript中递归函数用法注意点
2015/07/30 Javascript
javaScript实现可缩放的显示区效果代码
2015/10/26 Javascript
Angular.js回顾ng-app和ng-model使用技巧
2016/04/26 Javascript
自己动手制作基于jQuery的Web页面加载进度条插件
2016/06/03 Javascript
浅谈vue项目优化之页面的按需加载(vue+webpack)
2017/12/11 Javascript
JS数据类型分类及常用判断方法
2020/11/19 Javascript
原生微信小程序开发中 redux 的使用详解
2021/02/18 Javascript
js闭包和垃圾回收机制示例详解
2021/03/01 Javascript
[14:51]DOTA2 HEROS教学视频教你分分钟做大人-卓尔游侠
2014/06/13 DOTA
[01:06]DOTA2亚洲邀请赛专属珍藏-荧煌之礼
2017/03/24 DOTA
Python爬取网易云音乐上评论火爆的歌曲
2017/01/19 Python
python实现批量修改文件名代码
2017/09/10 Python
手把手教你如何安装Pycharm(详细图文教程)
2018/11/28 Python
django主动抛出403异常的方法详解
2019/01/04 Python
pytorch 共享参数的示例
2019/08/17 Python
python中xlrd模块的使用详解
2021/02/01 Python
HTML5之消息通知的使用(Web Notification)
2018/10/30 HTML / CSS
审计工作个人的自我评价
2013/12/25 职场文书
品德评语大全
2014/05/05 职场文书
学雷锋感言
2015/08/03 职场文书
canvas实现贪食蛇的实践
2022/02/15 Javascript
SpringBoot2零基础到精通之数据与页面响应
2022/03/22 Java/Android
Mybatis-Plus 使用 @TableField 自动填充日期
2022/04/26 Java/Android
浅谈为什么我的 z-index 又不生效了
2022/07/15 HTML / CSS