PyQt5 – 如何在使用urllib下载时自动设置进度条?
PyQt5 是开发Python GUI桌面应用程序方面的新兴GUI库之一。它具有丰富和强大的功能,确保了应用程序的生产质量。学习PyQt5库是对你知识的一种补充。你可以开发你的消费者质量、高度专业的应用程序。
在这篇文章中,我们将学习如何 在PyQt5中 实现 进度条 的自动化 。 我们所说的自动化是指动态地改变和设置 进度条 的值 。 假设你正在互联网上下载任何文件,并希望显示下载的进度,那么这篇文章一定会帮助你。
在本例中,我们正在使用 Urllib 库来下载文件,因为它是使用python下载文件最常用的库。
语法:
self.progressBar = QProgressBar(self)
QProgressBar类是用来创建进度条对象的。
首先,请看下面的代码,然后我们将解释整个事情的作用。
代码:
解释一下。
下面是 urllib 的语法 , 我们必须研究它的所有参数。
语法: urllib.request.urlretrieve(url, filename, reporthook)
参数: 这个方法将采取以下参数 。
第一个参数 是要下载的文件的网址。
第二个参数, 如果存在,指定保存文件的位置(如果这个参数没有通过,位置将是一个自动生成的名称的临时文件)。
第三个参数 是一个可调用文件,当文件被下载时,将被调用,每个区块将被读取,一次又一次。该可调用程序(在本例中是一个函数Handle_Progress)将作为三个参数被传递。
- 到目前为止传输的块的数量(blocknum)。
- 以字节为单位的块大小(blocksize)
- 文件的总大小(totalsize)。
因此,函数 Handle_Progress 接收三个参数。当前下载的文件大小是通过乘以blocknum和blocksize来动态计算的,并存储在变量readed_data中。
其余的工作由计算百分比的公式完成。我们把readed_data乘以100,然后除以文件的总大小。这就给了我们当前的下载百分比。然后我们使用 progressBar 对象的 setValue() 方法将这个下载百分比设置到进度条上。