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实现扫描端口示例
Mar 29 Python
Python抓取京东图书评论数据
Aug 31 Python
Python bsddb模块操作Berkeley DB数据库介绍
Apr 08 Python
Python中的异常处理简明介绍
Apr 13 Python
简单了解Python下用于监视文件系统的pyinotify包
Nov 13 Python
Python聚类算法之DBSACN实例分析
Nov 20 Python
PyCharm使用教程之搭建Python开发环境
Jun 07 Python
pandas重新生成索引的方法
Nov 06 Python
python 监听salt job状态,并任务数据推送到redis中的方法
Jan 14 Python
详解python读取image
Apr 03 Python
django 微信网页授权登陆的实现
Jul 30 Python
python实现发送form-data数据的方法详解
Sep 27 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
星际争霸任务指南——人族
2020/03/04 星际争霸
生成ubuntu自动切换壁纸xml文件的php代码
2010/07/17 PHP
php输入数据统一类实例
2015/02/23 PHP
javascript一点特殊用法
2008/05/28 Javascript
csdn 批量接受好友邀请
2009/02/19 Javascript
js中关于String对象的replace使用详解
2011/05/24 Javascript
在IE浏览器中resize事件执行多次的解决方法
2011/07/12 Javascript
JS:window.onload的使用介绍
2013/11/13 Javascript
用正则表达式替换图片地址img标签
2013/11/22 Javascript
JavaScript使用focus()设置焦点失败的解决方法
2014/09/03 Javascript
Javascript实现获取窗口的大小和位置代码分享
2014/12/04 Javascript
深入理解JavaScript系列(43):设计模式之状态模式详解
2015/03/04 Javascript
JavaScript中判断两个字符串是否相等的方法
2015/07/07 Javascript
JS中传递参数的几种不同方法比较
2017/01/20 Javascript
JavaScript制作简易计算器(不用eval)
2017/02/05 Javascript
详解数组Array.sort()排序的方法
2020/05/09 Javascript
JS中this的指向以及call、apply的作用
2018/05/06 Javascript
解决layui checkbox 提交多个值的问题
2019/09/02 Javascript
使用axios请求时,发送formData请求的示例
2019/10/29 Javascript
JavaScript常用8种数组去重代码实例
2020/09/09 Javascript
[02:16]卖萌的僵尸 DOTA2神话信使飞僵小宝来袭
2014/03/24 DOTA
[50:20]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第四局
2016/03/06 DOTA
[13:56]DAC2018 4.5SOLO赛决赛 MidOne vs Paparazi第一场
2018/04/06 DOTA
[59:53]DOTA2-DPC中国联赛 正赛 VG vs Elephant BO3 第二场 3月6日
2021/03/11 DOTA
pymongo实现多结果进行多列排序的方法
2015/05/16 Python
python清理子进程机制剖析
2017/11/23 Python
Python AES加密实例解析
2018/01/18 Python
python实现超简单的视频对象提取功能
2018/06/04 Python
python中的Elasticsearch操作汇总
2019/10/30 Python
css3的focus-within选择器的使用
2020/05/11 HTML / CSS
小女主人连衣裙:Little Mistress
2017/07/10 全球购物
集团公司总经理岗位职责
2013/12/20 职场文书
幼儿园教师个人总结
2015/02/05 职场文书
go语言求任意类型切片的长度操作
2021/04/26 Golang
只用Python就可以制作的简单词云
2021/06/07 Python
纯 CSS 自定义多行省略的问题(从原理到实现)
2021/11/11 HTML / CSS