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中zip()函数用法实例教程
Jul 31 Python
用Python实现换行符转换的脚本的教程
Apr 16 Python
django使用图片延时加载引起后台404错误
Apr 18 Python
python 中的divmod数字处理函数浅析
Oct 17 Python
Python使用matplotlib的pie函数绘制饼状图功能示例
Jan 08 Python
django框架之cookie/session的使用示例(小结)
Oct 15 Python
Flask中endpoint的理解(小结)
Dec 11 Python
Pytorch 中retain_graph的用法详解
Jan 07 Python
浅谈pytorch卷积核大小的设置对全连接神经元的影响
Jan 10 Python
开启Django博客的RSS功能的实现方法
Feb 17 Python
python接入支付宝的实例操作
Jul 20 Python
15个应该掌握的Jupyter Notebook使用技巧(小结)
Sep 23 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
深入了解php4(1)--回到未来
2006/10/09 PHP
PHP 模拟登陆MSN并获得用户信息
2009/05/16 PHP
PHP通过session id 实现session共享和登录验证的代码
2012/06/03 PHP
PHP实现通过Luhn算法校验信用卡卡号是否有效
2015/03/23 PHP
Symfony2 session用法实例分析
2016/02/04 PHP
js jquery获取随机生成id的服务器控件的三种方法
2013/07/11 Javascript
Jquery $.getJSON 在IE下的缓存问题解决方法
2014/10/10 Javascript
用模版生成HTML的的框架jquery.tmpl使用详解
2015/01/07 Javascript
jQuery实现的Div窗口震动效果实例
2015/08/07 Javascript
Angularjs之filter过滤器(推荐)
2016/11/27 Javascript
AngularJS模仿Form表单提交的实现代码
2016/12/08 Javascript
jQuery EasyUI ProgressBar进度条组件
2017/02/28 Javascript
详解React中的组件通信问题
2017/07/31 Javascript
Vue-Cli中自定义过滤器的实现代码
2017/08/12 Javascript
mpvue跳转页面及注意事项
2018/08/03 Javascript
js正则取值的结果数组调试方法
2018/10/10 Javascript
jQuery 同时获取多个标签的指定内容并储存为数组
2018/11/20 jQuery
jQuery实现input输入框获取焦点与失去焦点时提示的消失与显示功能示例
2019/05/27 jQuery
vue项目实现设置根据路由高亮对应的菜单项操作
2020/08/06 Javascript
在Python中利用Into包整洁地进行数据迁移的教程
2015/03/30 Python
python代码实现ID3决策树算法
2017/12/20 Python
Python元字符的用法实例解析
2018/01/17 Python
python web.py开发httpserver解决跨域问题实例解析
2018/02/12 Python
Python 实现网页自动截图的示例讲解
2018/05/17 Python
Python多线程原理与用法实例剖析
2019/01/22 Python
深入浅析python的第三方库pandas
2020/02/13 Python
Django如何实现防止XSS攻击
2020/10/13 Python
Python基于Webhook实现github自动化部署
2020/11/28 Python
django使用多个数据库的方法实例
2021/03/04 Python
HTML5使用drawImage()方法绘制图像
2014/06/23 HTML / CSS
HTML5 Web缓存和运用程序缓存(cookie,session)
2018/01/11 HTML / CSS
信息专业本科生个人的自我评价
2013/10/28 职场文书
寄语学生的话
2014/04/10 职场文书
助人为乐模范事迹材料
2014/06/02 职场文书
小学向国旗敬礼活动方案
2014/09/27 职场文书
企业2014年度工作总结
2014/12/10 职场文书