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发送消息)
Sep 06 Python
Python生成随机数的方法
Jan 14 Python
Python深入学习之对象的属性
Aug 31 Python
详解Python中的序列化与反序列化的使用
Jun 30 Python
matplotlib作图添加表格实例代码
Jan 23 Python
Python 存储字符串时节省空间的方法
Apr 23 Python
python 实现交换两个列表元素的位置示例
Jun 26 Python
Django1.11自带分页器paginator的使用方法
Oct 31 Python
在Pytorch中计算卷积方法的区别详解(conv2d的区别)
Jan 03 Python
利用python生成照片墙的示例代码
Apr 09 Python
Python中zip函数如何使用
Jun 04 Python
python中return不返回值的问题解析
Jul 22 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 星际争霸
PHP个人网站架设连环讲(三)
2006/10/09 PHP
PHP学习之整理字符串
2011/04/17 PHP
Codeigniter上传图片出现“You did not select a file to upload”错误解决办法
2014/06/12 PHP
Smarty保留变量用法分析
2016/05/23 PHP
JavaScript Event学习第五章 高级事件注册模型
2010/02/07 Javascript
jquery中表单 多选框的一种巧妙写法
2015/09/06 Javascript
浅析2种JavaScript继承方式
2015/12/04 Javascript
jqueryMobile使用示例分享
2016/01/12 Javascript
JavaScript 正则表达式中global模式的特性
2016/02/25 Javascript
JS中如何比较两个Json对象是否相等实例代码
2016/07/13 Javascript
vue2.0使用Sortable.js实现的拖拽功能示例
2017/02/21 Javascript
js操作二进制数据方法
2018/03/03 Javascript
Vue.extend实现挂载到实例上的方法
2019/05/01 Javascript
js实现计时器秒表功能
2019/12/16 Javascript
javascript设计模式 ? 代理模式原理与用法实例分析
2020/04/16 Javascript
vue-router路由懒加载及实现的3种方式
2021/02/28 Vue.js
[07:57]DOTA2热力大趴狂欢夜 广州站活动回顾
2013/11/27 DOTA
[05:16]《大圣!大圣》——DOTA2新英雄齐天大圣配音李世宏老师专访
2016/12/13 DOTA
[07:01]DOTA2-DPC中国联赛正赛 Aster vs Magma 3月5日 赛后选手采访
2021/03/11 DOTA
浅谈Python 字符串格式化输出(format/printf)
2016/07/21 Python
python2.7的编码问题与解决方法
2016/10/04 Python
Python字符串的常见操作实例小结
2019/04/08 Python
python远程连接MySQL数据库
2019/04/19 Python
详解用Python实现自动化监控远程服务器
2019/05/18 Python
Python3爬虫关于识别点触点选验证码的实例讲解
2020/07/30 Python
美国按摩椅批发网站:Titan Chair
2018/12/27 全球购物
计算机应用职专应届生求职信
2013/11/12 职场文书
数学专业推荐信范文
2013/11/21 职场文书
安全教育实施方案
2014/03/02 职场文书
给小学生的新年寄语
2014/04/04 职场文书
合作经营协议书范本
2014/04/17 职场文书
补充协议书范本
2014/04/23 职场文书
自我工作评价范文
2015/03/06 职场文书
Keras在mnist上的CNN实践,并且自定义loss函数曲线图操作
2021/05/25 Python
详解Java七大阻塞队列之SynchronousQueue
2021/09/04 Java/Android