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标准库之循环器(itertools)介绍
Nov 25 Python
Python的Flask框架中Flask-Admin库的简单入门指引
Apr 07 Python
Python入门之modf()方法的使用
May 15 Python
利用python爬取散文网的文章实例教程
Jun 18 Python
python版学生管理系统
Jan 10 Python
聊聊Python中的pypy
Jan 12 Python
python操作redis方法总结
Jun 06 Python
Python实现多线程/多进程的TCP服务器
Sep 03 Python
Python ckeditor富文本编辑器代码实例解析
Jun 22 Python
详解pandas中利用DataFrame对象的.loc[]、.iloc[]方法抽取数据
Dec 13 Python
python中Array和DataFrame相互转换的实例讲解
Feb 03 Python
pycharm 使用anaconda为默认环境的操作
Feb 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 获得汉字拼音首字母的函数
2009/08/01 PHP
网页游戏开发入门教程三(简单程序应用)
2009/11/02 PHP
php下载文件的代码示例
2012/06/29 PHP
详解WordPress中提醒安装插件以及隐藏插件的功能实现
2015/12/25 PHP
php使用file函数、fseek函数读取大文件效率对比分析
2016/11/04 PHP
prototype1.4中文手册
2006/09/22 Javascript
基于jquery的商品展示放大镜
2010/08/07 Javascript
用按钮控制iframe显示的网页实现方法
2013/02/04 Javascript
javascript获取隐藏dom的宽高 具体实现
2013/07/14 Javascript
JQuery的自定义事件代码,触发,绑定简单实例
2013/08/01 Javascript
JSON+HTML实现国家省市联动选择效果
2014/05/18 Javascript
JQuery中DOM事件合成用法实例分析
2015/06/13 Javascript
javascript实现类似java中getClass()得到对象类名的方法
2015/07/27 Javascript
基于jQuery实现多层次的手风琴效果附源码
2015/09/21 Javascript
jquery自定义表格样式
2015/11/23 Javascript
JQuery实现Ajax加载图片的方法
2015/12/24 Javascript
详细谈谈javascript的对象
2016/07/31 Javascript
jQuery表单验证简单示例
2016/10/17 Javascript
详解vue移动端日期选择组件
2018/02/22 Javascript
Vue 实现把表单form数据 转化成json格式的数据
2019/10/29 Javascript
vue获取form表单的值示例
2019/10/29 Javascript
python 解析html之BeautifulSoup
2009/07/07 Python
安装Python的web.py框架并从hello world开始编程
2015/04/25 Python
使用python将图片按标签分入不同文件夹的方法
2018/12/08 Python
Django给admin添加Action的步骤详解
2019/05/01 Python
Python使用re模块验证危险字符
2020/05/21 Python
css3实例教程 一款纯css3实现的环形导航菜单
2014/10/20 HTML / CSS
《真想变成大大的荷叶》教学反思
2014/04/14 职场文书
个人先进材料范文
2014/12/30 职场文书
2016年寒假社会实践活动总结
2015/03/27 职场文书
高考诚信考试承诺书
2015/04/29 职场文书
公司文体活动总结
2015/05/07 职场文书
2016年大学生暑假爱心支教活动策划书
2015/11/26 职场文书
七年级作文之下雨天
2019/12/23 职场文书
pytorch 梯度NAN异常值的解决方案
2021/06/05 Python
零基础学java之方法的定义与调用详解
2022/04/10 Java/Android