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之入门(二)基本数据类型
May 25 Python
Python切片用法实例教程
Sep 08 Python
python使用mailbox打印电子邮件的方法
Apr 30 Python
浅谈tensorflow中几个随机函数的用法
Jul 27 Python
在Pycharm terminal中字体大小设置的方法
Jan 16 Python
Python3.4学习笔记之常用操作符,条件分支和循环用法示例
Mar 01 Python
Python OpenCV实现视频分帧
Jun 01 Python
Python Pandas 获取列匹配特定值的行的索引问题
Jul 01 Python
django foreignkey外键使用的例子 相当于left join
Aug 06 Python
你还在@微信官方?聊聊Python生成你想要的微信头像
Sep 25 Python
Python Socket TCP双端聊天功能实现过程详解
Jun 15 Python
Python如何使用vars返回对象的属性列表
Oct 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 异常处理实现代码
2009/03/10 PHP
PHP文件操作之获取目录下文件与计算相对路径的方法
2016/01/08 PHP
Symfony模板的快捷变量用法实例
2016/03/17 PHP
PHP中获取文件创建日期、修改日期、访问时间的方法
2016/11/05 PHP
PHP实现网页内容html标签补全和过滤的方法小结【2种方法】
2017/04/27 PHP
PHP如何根据文件头检测文件类型实例代码
2018/10/14 PHP
基于PHP+Mysql简单实现了图书购物车系统的实例详解
2020/08/06 PHP
js实现浏览器的各种菜单命令比如打印、查看源文件等等
2013/10/24 Javascript
js完美的div拖拽实例代码
2014/01/22 Javascript
JQEasy-ui在IE9以下版本中二次加载的问题分析及处理方法
2014/06/23 Javascript
js监控IE火狐浏览器关闭、刷新、回退、前进事件
2014/07/23 Javascript
jQuery中:gt选择器用法实例
2014/12/29 Javascript
javascript 事件处理示例分享
2014/12/31 Javascript
js实现不提交表单获取单选按钮值的方法
2015/08/21 Javascript
js获取及判断键盘按键的方法
2015/12/01 Javascript
JavaScript正则表达式的分组匹配详解
2016/02/13 Javascript
JavaScript 计算笛卡尔积实例详解
2016/12/02 Javascript
js判断iframe中元素是否存在的实现代码
2016/12/24 Javascript
Vue.js bootstrap前端实现分页和排序
2017/03/10 Javascript
jQuery EasyUI window窗口使用实例代码
2017/12/25 jQuery
nodejs实现用户登录路由功能
2019/05/22 NodeJs
[03:06]V社市场总监Dota2项目负责人Erik专访:希望更多中国玩家加入DOTA2
2014/07/11 DOTA
Python3导入自定义模块的三种方法详解
2018/04/13 Python
Python常用字符串替换函数strip、replace及sub用法示例
2018/05/21 Python
python实现AES加密和解密
2019/03/27 Python
浅析Python与Mongodb数据库之间的操作方法
2019/07/01 Python
Python 图像对比度增强的几种方法(小结)
2019/09/25 Python
Python全面分析系统的时域特性和频率域特性
2020/02/26 Python
Python之qq自动发消息的示例代码
2021/02/18 Python
全球地下的服装和态度:Slam Jam
2018/02/04 全球购物
京东奢侈品:全球奢侈品牌
2018/03/17 全球购物
写好自荐信的几个要点
2013/12/26 职场文书
党员个人对照检查材料思想汇报
2014/09/16 职场文书
2014年党务工作总结
2014/11/25 职场文书
python 中[0]*2与0*2的区别说明
2021/05/10 Python
python基础之错误和异常处理
2021/10/24 Python