Code: Alles auswählen
import os
import sys
import requests
import threading
from PyQt4.QtGui import QDialog, QIcon
from PyQt4.uic import loadUi
class DownloadThread(threading.Thread):
def __init__(self, url, update_window):
threading.Thread.__init__(self)
self.url = url
self.update_window = update_window
def run(self):
location = os.path.abspath(os.path.join('temp', 'example-app-0.3.win32.zip'))
file = requests.get(self.url, stream=True)
file_size = int(requests.head(self.url).headers.get('content-length', None))
chunk_size = (10000)
downloaded_bytes = 0
block_size = 1024*8
with open(location, 'wb') as fd:
for chunk in file.iter_content(chunk_size):
fd.write(chunk)
downloaded_bytes += block_size
self.update_window.setProgress(float(downloaded_bytes)/file_size*100)
print "Finish"
return
class Update_Window(QDialog):
def __init__(self, parent=None):
QDialog.__init__(self, parent)
self.getPath_update = os.path.abspath(os.path.join('files', "qt_ui", 'pp_update.ui'))
self.ui_pp_update = loadUi(self.getPath_update, self)
self.ui_pp_update.setWindowModality(Qt.ApplicationModal)
self.set_caption_buttons()
self.create_actions_buttons()
def on_update(self):
DownloadThread('http://sophus.bplaced.net/download/example-app-0.3.win32.zip', self.ui_pp_update).start()
def set_caption_buttons(self):
self.ui_pp_update.pushButtonUpdate.setText("Update")
self.ui_pp_update.pushButtonClose.setText("Cancel")
def create_actions_buttons(self):
self.ui_pp_update.pushButtonUpdate.clicked.connect(self.on_update)
def set_ui_pp_update(self):
self.progressBarUpdate.setAlignment(Qt.AlignCenter)
self.progressBarUpdate.setRange(0, 1)
def setProgress(self, value):
if value > 100:
value = 100
self.progressBarUpdate.setValue(value)