import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import * import queue #如果不加载这个模板,pyinstaller打包后,可能无法运行requests模板
import requests
################################################ ################################################
class Widget(QWidget):
def __init__(self, *args, **kwargs):
super(Widget, self).__init__(*args, **kwargs)
layout = QHBoxLayout(self) # 增加进度条
self.progressBar = QProgressBar(self, minimumWidth=400)
self.progressBar.setValue(0)
layout.addWidget(self.progressBar) # 增加下载按钮
self.pushButton = QPushButton(self, minimumWidth=100)
self.pushButton.setText("下载")
layout.addWidget(self.pushButton) # 绑定按钮事件
self.pushButton.clicked.connect(self.on_pushButton_clicked) # 下载按钮事件
def on_pushButton_clicked(self):
the_url = 'http://cdn2.ime.sogou.com/b24a8eb9f06d6bfc08c26f0670a1feca/5c9de72d/dl/index/1553820076/sogou_pinyin_93e.exe'
the_filesize = requests.get(the_url, stream=True).headers['Content-Length']
the_filepath ="D:/sogou_pinyin_93e.exe"
the_fileobj = open(the_filepath, 'wb')
#### 创建下载线程
self.downloadThread = downloadThread(the_url, the_filesize, the_fileobj, buffer=10240)
self.downloadThread.download_proess_signal.connect(self.set_progressbar_value)
self.downloadThread.start() # 设置进度条
def set_progressbar_value(self, value):
self.progressBar.setValue(value)
if value == 100:
QMessageBox.information(self, "提示", "下载成功!")
return ##################################################################
#下载线程
##################################################################
class downloadThread(QThread):
download_proess_signal = pyqtSignal(int) #创建信号 def __init__(self, url, filesize, fileobj, buffer):
super(downloadThread, self).__init__()
self.url = url
self.filesize = filesize
self.fileobj = fileobj
self.buffer = buffer def run(self):
try:
rsp = requests.get(self.url, stream=True) #流下载模式
offset = 0
for chunk in rsp.iter_content(chunk_size=self.buffer):
if not chunk: break
self.fileobj.seek(offset) #设置指针位置
self.fileobj.write(chunk) #写入文件
offset = offset + len(chunk)
proess = offset / int(self.filesize) * 100
self.download_proess_signal.emit(int(proess)) #发送信号
#######################################################################
self.fileobj.close() #关闭文件
self.exit(0) #关闭线程 except Exception as e:
print(e) ####################################
#程序入口
####################################
if __name__ == "__main__":
app = QApplication(sys.argv)
w = Widget()
w.show()
sys.exit(app.exec_())

案例-pyqt进度条案例的更多相关文章

  1. easyui制作进度条案例demo

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  2. 关于小程序 scroll-view中设置scroll-top无效 和小说图书阅读进度条小案例

    在最近的项目有做到关于小说阅读的进度条功能,其中用到scroll-view和slider组件,发现scroll-view中的scroll-top在设置值后无效,出现这种情况大概是以下几种问题: 1.s ...

  3. 【PyQt5-Qt Designer】QProgressBar() 进度条

    QProgressBar() 进度条 QProgressBar简介 QProgressBar小部件提供了一个水平或垂直的进度条. 进度条用于向用户指示操作的进度,并向他们保证应用程序仍在运行. 进度条 ...

  4. SeekBar进度条简单案例

    SeekBar是进度条.我们使用进度条时,可以使用系统默认的进度条:也可以自定义进度条的图片和滑块图片等 向右拉进度条让图片显示出来 向右拉五角星加载有色进度条 baseSeekBar package ...

  5. ⑿bootstrap组件 缩略图 警告框 进度条 基础案例

      <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&q ...

  6. 进度条加载与案例优化对比——python使用perf_count方法实现

    本章我们将讨论python3 perf_counter()的用法及它的实际应用我从中选取两个python基于rquests库的爬虫实例代码源文件进行举例 Python3 perf_counter() ...

  7. Vue项目开发,nprogress进度条加载之超详细讲解及实战案例

    Nprogress的默认进度条很细,它的设计灵感主要来源于 谷歌,YouTube 他的安装方式也很简单,你可以有两种使用方式: 直接引入js和css文件 使用npm安装的的方式 直接引入: Npm安装 ...

  8. Android-做个性化的进度条

    1.案例效果图 2.准备素材                                progress1.png(78*78)              progress2.png(78*78) ...

  9. C#编程总结(四)多线程应用(进度条的编程问题)——转自http://www.cnblogs.com/yank/p/3232955.html

    多线程应用 多线程应用很广泛,简单总结了一下: 1)不阻断主线程,实现即时响应,由后台线程完成特定操作2)多个线程,完成同类任务,提高并发性能3)一个任务有多个独立的步骤,多个线程并发执行各子任务,提 ...

随机推荐

  1. A Hybrid Data Association Framework for Robust Online Multi-Object Tracking(2017 IEEE Transactions on Image Processing)

    A Hybrid Data Association Framework for Robust Online Multi-Object Tracking 一种用于鲁棒在线多目标跟踪的混合数据关联框架 摘 ...

  2. 2019ccpc哈尔滨打铜记

    小学生日记: 2019.10.13,哈尔滨,打了个铜 开头 先说结论,这次失败,我的锅70%,sdl的锅5%,ykh25% Day0 周五, 我们队出现了奇怪的厄运上身 首先是我中途在飞机上数据线突然 ...

  3. 一个工程中cpp文件的编译顺序

    做了一个实验. 最后build失败,失败的原因是变量i被重定义了.原本按照我的思路,是不应该失败的.因为我用了条件编译,若先编译Source.cpp,则会#define __HEADER_H__并且定 ...

  4. C语言基础五 数组的应用

    .根据用户输入的10人成绩并将其保存到数组中,求最高成绩,最低成绩和平均成绩 int scoure[10];//存储10个数据的数组 int i; int sum;//总成绩 int max,min, ...

  5. 初识matlab

    1 matlab概貌 MATLAB是MATrix LABoratory(矩阵实验室)的缩写,是一款由美国The MathWorks公司出品的商业数学软件.matlab是一种用于算法开发.数据可视化.数 ...

  6. 删掉以前的旧Flow,创作现在的新节奏

    2017年开始实习,现已2020年.三年又三年.今天我删掉无知的从前,进入新世界. 无论活的多累 做人不进则退 只能自我激励 将这当做基地

  7. JavaScript数据类型typeof()和转换

    javascript属于弱类型,值包含:数字,字符串和布尔值,c++与java属于强类型;int a="a",string a="a" 报错;var a ;原始 ...

  8. mysql随机抽取数据

      -- 慢 ; -- 较慢 SELECT * FROM `table` WHERE id >= (SELECT floor( RAND() * ((SELECT MAX(id) FROM `t ...

  9. 简单的试了试async和await处理异步的方式

    今天无意中就来试了试,感觉这个新的方法还是非常行的通的,接下来我们上代码 这段代码想都不用想输出顺序肯定是//null null 233,当然出现这个问题还是因为它是同步,接下来我们就进行异步方式来处 ...

  10. webstorm 添加代码模板

    file>setting>Live Templates>选择文件类型