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 相关文章推荐
celery4+django2定时任务的实现代码
Dec 23 Python
利用python修改json文件的value方法
Dec 31 Python
Python 实现数据结构-循环队列的操作方法
Jul 17 Python
python如何将多个PDF进行合并
Aug 13 Python
python3 Scrapy爬虫框架ip代理配置的方法
Jan 17 Python
python定义类self用法实例解析
Jan 22 Python
Django 设置多环境配置文件载入问题
Feb 25 Python
使用python从三个角度解决josephus问题的方法
Mar 27 Python
Python如何操作office实现自动化及win32com.client的运用
Apr 01 Python
python中如何写类
Jun 29 Python
python字符串常规操作大全
May 02 Python
Opencv中cv2.floodFill算法的使用
Jun 18 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
「OVERLORD」动画重要删减!雅儿贝德的背叛?至尊猎杀队结成
2020/04/09 日漫
兼容PHP和Java的des加密解密代码分享
2014/06/26 PHP
php基于session实现数据库交互的类实例
2015/08/03 PHP
Yii框架核心组件类实例详解
2019/08/06 PHP
Mootools 1.2教程 Tooltips
2009/09/15 Javascript
网页上的Javascript编辑器和代码格式化
2010/04/25 Javascript
jQuery插件的写法分享
2013/06/12 Javascript
js setTimeout()函数介绍及应用以倒计时为例
2013/12/12 Javascript
jQuery常用操作方法及常用函数总结
2014/06/19 Javascript
了解Javascript的模块化开发
2015/03/02 Javascript
D3.js中data(), enter() 和 exit()的问题详解
2015/08/17 Javascript
关于事件mouseover ,mouseout ,mouseenter,mouseleave的区别
2015/10/12 Javascript
easyui 中的datagrid跨页勾选问题的实现方法
2017/01/18 Javascript
JS打开摄像头并截图上传示例
2017/02/18 Javascript
nodejs实现OAuth2.0授权服务认证
2017/12/27 NodeJs
vue 双向数据绑定的实现学习之监听器的实现方法
2018/11/30 Javascript
适合前端Vue开发童鞋的跨平台Weex的使用详解
2019/10/16 Javascript
vue 强制组件重新渲染(重置)的两种方案
2019/10/29 Javascript
js中调用微信的扫描二维码功能的实现代码
2020/04/11 Javascript
vue数据更新UI不刷新显示的解决办法
2020/08/06 Javascript
python 环境变量和import模块导入方法(详解)
2017/07/11 Python
对python使用telnet实现弱密码登录的方法详解
2019/01/26 Python
Python 使用指定的网卡发送HTTP请求的实例
2019/08/21 Python
python实现PCA降维的示例详解
2020/02/24 Python
利用python 读写csv文件
2020/09/10 Python
python实现简单猜单词游戏
2020/12/24 Python
Strawberrynet草莓网新加坡站:护肤、彩妆、香水及美发产品
2018/08/31 全球购物
微软马来西亚官方网站:Microsoft马来西亚
2019/11/22 全球购物
一帮一活动总结
2014/05/08 职场文书
习近平在党的群众路线教育实践活动总结大会上的讲话
2014/10/21 职场文书
2014年学校教学工作总结
2014/12/06 职场文书
离婚协议书的范本
2015/01/27 职场文书
委托书格式范文
2015/01/28 职场文书
委托开发合同书(标准版)
2019/08/07 职场文书
六年级作文之关于梦
2019/10/22 职场文书
Java中的Kafka为什么性能这么快及4大核心详析
2022/09/23 Java/Android