I want to make a download tool .I use the following part code for downloading
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4.QtNetwork import *
import sys
class DownloadTask(QObject):
@staticmethod
def speed(byte):
if byte<1024:
unit = "B/S"
elif byte < 1024*1024:
byte //= 1024;
unit = "KB/S";
else :
byte//= 1024*1024
unit = "MB/S";
return '{} {}'.format(byte,unit)
def __init__(self, downloadLink):
super(DownloadTask, self).__init__()
self.manager=QNetworkAccessManager ()
# self.bytesReceived = 0
self.bytesLastReceived =0
self.speedRate='0 KB/S'
self.downloadPart=0
self.bytesReceived=0
url=QUrl(downloadLink)
self.request=QNetworkRequest (url)
self.request.setRawHeader("User-Agent" ,'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17 SE 2.X MetaSr 1.0')
self.currentDownload=self.manager.get(self.request)
self.downloadTime = QTimer()
self.downloadTime.timeout.connect(self.showSpeed)
self.downloadTime.start(1000)
fileInfo = QFileInfo(url.path())
fileName = fileInfo.fileName()
self.output=QFile(fileName)
self.output.open(QIODevice.WriteOnly)
self.progressBar=QProgressBar()
self.progressBar.setValue(0)
self.currentDownload.downloadProgress.connect(self.downloadProgress)
self.currentDownload.finished.connect(self.downloadFinished)
self.currentDownload.readyRead.connect(self.downloadReadyRead)
def downloadProgress(self, bytesReceived, bytesTotal):
self.downloadPart=bytesReceived/bytesTotal#'{:.0%}'.format()
self.bytesReceived=bytesReceived
# self.__updateInfoLabel()
def showSpeed(self):
self.progressBar.setValue(self.downloadPart)
br=self.bytesReceived-self.bytesLastReceived
self.bytesLastReceived = self.bytesReceived
self.speedRate=self.__class__.speed(br)
# print(self.downloadPart, self.speedRate)
def downloadFinished(self):
print('done!!!!!')
self.output.close();
self.currentDownload.deleteLater();
# startNextDownload();
def downloadReadyRead(self):
self.output.write(self.currentDownload.readAll())
now I am facing a problem :I don’t know how to reflect download progress onto QtableView or QtableWidget ?especially downloading 2 or more files at the same time .
for instance ,how to reflect download progress onto this QtableView ?
http://postimg.org/image/7hr2xewof/
here is 2 download audio link for test
http://down.51voa.com/201305/syrian-strife-spilling-over-infecting-region.mp3
http://down.51voa.com/201305/us-military-sex-abuse-problem.mp3
anyone can give a little sample ? thanks in advance !!!
↧