pyqt5实现wget下载视频文件的进度条显示

简介:

最近在写一个项目,用到了wget下载视频,为了更好的视觉效果,所以使用pyqt5中QProgressBar来实现下载进度条。当视频开始下载就会弹出下载进度条,下载完成后进度条消失。效果如下图;

具体代码实现 :

import os
import sys
import wget
from PyQt5 import QtWidgets
from PyQt5.QtGui import QFont
from PyQt5.QtWidgets import QProgressBar, QHBoxLayout, QWidget
from config.path import parent_path
from PyQt5.QtCore import QThread, pyqtSignalclass DownloadWidget(QWidget):def __init__(self, video_url, video_name):super(DownloadWidget, self).__init__()self.url = video_urlself.target_name = video_nameself.setWindowTitle('视频下载中...')layout = QHBoxLayout(self)# 创建进度条self.progressBar = QProgressBar(self, minimumWidth=400)self.progressBar.setStyleSheet("QProgressBar { border: 2px solid grey; border-radius: 5px; background-color: ""#FFFFFF; text-align: center;}QProgressBar::chunk {background:QLinearGradient(""x1:0,y1:0,x2:2,y2:0,stop:0 #666699,stop:1  #DB7093); }")font = QFont()font.setBold(True)font.setWeight(30)self.progressBar.setFont(font)self.progressBar.setValue(0)self.progressBar.setMinimum(0)self.progressBar.setMaximum(100)self.progressBar.setFormat('Loaded  %p%'.format(self.progressBar.value() - self.progressBar.minimum()))layout.addWidget(self.progressBar)# 创建并启动下载线程self.download_thread = DownloadThread(self.url, self.target_name)self.download_thread.progressChanged.connect(self.update_progress)self.download_thread.start()# 更新进度条def update_progress(self, value):if value == 100:print('下载完成!!!!!!')self.close()self.progressBar.setValue(value)class DownloadThread(QThread):# 定义信号progressChanged = pyqtSignal(int)def __init__(self, video_url, video_name):super(DownloadThread, self).__init__()self.url = video_urlself.target_name = video_namedef run(self):tmpdir = parent_path + '\\static\\mp4'self.download_video(self.url, os.path.join(tmpdir, self.target_name))# 下载视频def download_video(self, url, target_path):wget.download(url, out=target_path, bar=self.progress_bar_callback)self.progressChanged.emit(100)# 回调函数,用于更新进度条def progress_bar_callback(self, current, total, width=80):progress = current / total * 100self.progressChanged.emit(int(progress))if __name__ == '__main__':print("system open")app = QtWidgets.QApplication(sys.argv)main_ui = DownloadWidget("url", 'test.mp4')main_ui.show()sys.exit(app.exec_())

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/293427.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FastGPT+ChatGLM3-6b搭建知识库

前言:我用fastgpt直接连接chatglm3,没有使用oneai,不是很复杂,只需要对chatglm3项目代码做少量修改就能支持使用embeddings,向量模型用的m3e,效果还可以 我的配置: 处理器:i5-13500 …

华为云Stack 8.X流量模型分析(三)

三、VPC内部二层流量模型分析 1.不同宿主机下虚拟机互访 VM1发送arp请求,arp报文根据流表到达br-tun,br-tun给予VM1到达VM2的MAC信息。此时arp报文不出宿主机(Host1); **注意:**br-tun内的信息是由管理平…

Ignite分布式缓存框架

1.前言 Apache Ignite是一个分布式数据库,支持以内存级的速度进行高性能计算。 2。快速入门 本章节介绍运行Ignite的系统要求,如何安装,启动一个集群,然后运行一个简单的HelloWorld示例。 2.1.环境要求 Apache Ignite官方在如…

110基于matlab的混合方法组合的极限学习机和稀疏表示进行分类

基于matlab的混合方法组合的极限学习机和稀疏表示进行分类。通过将极限学习机(ELM)和稀疏表示(SRC)结合到统一框架中,混合分类器具有快速测试(ELM的优点)的优点,且显示出显着的分类精…

关于频谱仪是如何来实现辐射功率测量

1.1 内部基本原理框架 首先是接收到外部信号输入,然后经过可变衰减器衰减,接着进行变频,接着经过带宽带通滤波器进行滤波,滤波后的信号送入检波器进行信号检测,再经对数放大器放大后,送入低通滤波器进行视频…

java.lang.IllegalStateException: Duplicate key

序言 最近监控扫描出我们项目的某些异常信息,报错java.lang.IllegalStateException: Duplicate key xxx,看到异常来自stream流,然后定位看了一下是某位同事的代码使用stream流把List转Map集合出现重复的key异常信息。List集合A对象来源于某个…

鸿蒙ArkTS语言介绍与TS基础语法

1、ArkTS介绍 ArkTS是HarmonyOS主力应用开发语言,它在TS基础上,匹配ArkUI框架,扩展了声明式UI、状态管理等响应的能力,让开发者以更简洁、更自然的方式开发跨端应用。 JS 是一种属于网络的高级脚本语言,已经被广泛用…

FunBox11靶场 安装下载渗透详细教程

一. 下载靶场 官网下载地址 二. 安装 1.导入FunBox11 三.修改键盘布局和修改IP 参考历史文庄FunBox9安装教程 四. 打靶 1.提供arp-scan工具扫描网络主机IP arp-scan -l -i eh1 2.通过nmap 对目标主机进行扫描 nmap -A -p- -T5 172.30.1.134 -A : 启动Os检测,版…

Qt/QML编程学习之心得:在QML工程中添加库(十四)

实现库并且使用库,类似于vc中的静态库library、动态库dll、COM组件等方法一样,在Qt中也经常会使用库,或者将部分功能打包成库。 右击Qt项目,点击add library... 在linux中将.a文件导入,工程会自动在.pro温江中增加相应…

java定义三套场景接口方案

一、背景 在前后端分离开发的背景下,后端java开发人员现在只需要编写接口接口。特别是使用微服务开发的接口。resful风格接口。那么一般后端接口被调用有下面三种场景。一、不需要用户登录的接口调用,第二、后端管理系统接口调用(需要账号密…

进程间通信---无名管道

无名管道和有名管道的区别: 无名管道只能用于父进程和子进程之间通信,而有名管道可以用于任意两个进程间通信 管道工作的原理: 切记:无名管道一旦创建完成后,操作无名管道等同于操作文件,无名管道的读端/写…

【泛型中K T V E? Object等分别代表什么含 义】

✅ 泛型中K T V E? Object等分别代表什么含义 ✅ 典型解析✅代码示例 ✅ 典型解析 E - Element (在集合中使用,因为集合中存放的是元素) T-Type (Java 类) K- Key (键) V - Value (值) N - Number (数值类型) ? - 表示不确定的iava类型 (无限制通配符类型) …