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从入门到精通(DAY 2)
Dec 20 Python
python实现文本去重且不打乱原本顺序
Jan 26 Python
Python使用matplotlib绘制正弦和余弦曲线的方法示例
Jan 06 Python
Flask解决跨域的问题示例代码
Feb 12 Python
python爬虫 使用真实浏览器打开网页的两种方法总结
Apr 21 Python
从请求到响应过程中django都做了哪些处理
Aug 01 Python
django Serializer序列化使用方法详解
Oct 16 Python
python 快速把超大txt文件转存为csv的实例
Oct 26 Python
两个元祖T1=('a', 'b'),T2=('c', 'd')使用匿名函数将其转变成[{'a': 'c'},{'b': 'd'}]的几种方法
Mar 05 Python
Python学习笔记之抓取某只基金历史净值数据实战案例
Jun 03 Python
Python读取xlsx文件的实现方法
Jul 04 Python
Python中的套接字编程是什么?
Jun 21 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
利用js获取服务器时间的两个简单方法
2010/01/08 Javascript
js 键盘记录实现(兼容FireFox和IE)
2010/02/07 Javascript
很棒的学习jQuery的12个网站推荐
2011/04/28 Javascript
JS 进度条效果实现代码整理
2011/05/21 Javascript
js DOM的学习笔记
2011/12/22 Javascript
解析John Resig Simple JavaScript Inheritance代码
2012/12/03 Javascript
使用jquery mobile做幻灯播放效果实现步骤
2013/01/04 Javascript
如何使用jquery动态加载js,css文件实现代码
2013/04/03 Javascript
js获取dom的高度和宽度(可见区域及部分等等)
2013/06/13 Javascript
首页图片漂浮效果示例代码
2014/06/05 Javascript
使用jQuery判断浏览器滚动条位置的方法
2016/05/30 Javascript
简单封装js的dom查询实例代码
2016/07/08 Javascript
微信小程序城市定位的实现实例(获取当前所在国家城市信息)
2017/05/17 Javascript
原生JavaScript实现的简单省市县三级联动功能示例
2017/05/27 Javascript
将 vue 生成的 js 上传到七牛的实例
2017/07/28 Javascript
对于Javascript 执行上下文的全面了解
2017/09/05 Javascript
jq源码解析之绑在$,jQuery上面的方法(实例讲解)
2017/10/13 jQuery
Angular 4中如何显示内容的CSS样式示例代码
2017/11/06 Javascript
Angular实现点击按钮后在上方显示输入内容的方法
2017/12/27 Javascript
vue+webpack实现异步加载三种用法示例详解
2018/04/24 Javascript
React Hooks的深入理解与使用
2018/11/12 Javascript
js中Array对象的常用遍历方法详解
2019/01/17 Javascript
Vue使用Proxy代理后仍无法生效的解决
2020/11/13 Javascript
python实现搜索本地文件信息写入文件的方法
2016/02/22 Python
浅谈Tensorflow模型的保存与恢复加载
2018/04/26 Python
Python不同目录间进行模块调用的实现方法
2019/01/29 Python
python,Django实现的淘宝客登录功能示例
2019/06/12 Python
Python virtualenv虚拟环境实现过程解析
2020/04/18 Python
Python 利用argparse模块实现脚本命令行参数解析
2020/12/28 Python
装修五一活动策划案
2014/01/23 职场文书
淘宝中秋节活动方案
2014/01/31 职场文书
书香校园活动方案
2014/02/28 职场文书
创业者迈进成功第一步:如何写创业计划书?
2014/03/22 职场文书
口才训练演讲稿范文
2014/09/16 职场文书
2020优秀员工演讲稿(三篇)
2019/10/17 职场文书
Python中的np.argmin()和np.argmax()函数用法
2021/06/02 Python