Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import sys
- import urllib2
- import time
- from PySide import QtCore, QtGui, QtNetwork
- class DownloadThread(QtCore.QThread):
- data_downloaded = QtCore.Signal()
- def __init__(self, url):
- QtCore.QThread.__init__(self)
- self.url = url
- self._data = None
- def run(self):
- self._data = urllib2.urlopen(self.url).read()
- self.data_downloaded.emit()
- def get_data(self):
- return self._data
- class ImagePreview(QtGui.QWidget):
- def __init__(self, parent=None):
- super(ImagePreview, self).__init__(parent)
- self.setMinimumSize(50, 50)
- self.text = None
- self.pixmap = None
- self.dl_n = 0
- def paintEvent(self, paintEvent):
- painter = QtGui.QPainter(self)
- if(self.pixmap):
- painter.drawPixmap(0, 0, self.pixmap)
- if(self.text):
- painter.setPen(QtCore.Qt.blue)
- painter.setFont(QtGui.QFont("Arial", 30))
- painter.drawText(self.rect(), QtCore.Qt.AlignCenter, self.text)
- def startDownload(self):
- self.setText(str(self.dl_n))
- self.dl_n += 1
- print("Starting Download {0}".format(self.dl_n))
- self.download_thread = DownloadThread('http://192.168.0.50:8080/images/logo.gif')
- self.download_thread.start()
- self.download_thread.data_downloaded.connect(self.ondownloadFinished)
- def ondownloadFinished(self):
- self.paintImage()
- print("download finished?")
- if self.dl_n < 5:
- self.startDownload()
- def paintImage(self):
- print("Painting")
- pixmap = QtGui.QPixmap()
- pixmap.loadFromData(self.download_thread.get_data())
- self.setPixmap(pixmap)
- def setPixmap(self, pixmap):
- self.pixmap = pixmap
- self.setMinimumSize(pixmap.width(), pixmap.height())
- self.update()
- def setText(self, text):
- self.text = text
- self.update()
- class MainWindow(QtGui.QWidget):
- def __init__(self):
- super(MainWindow, self).__init__()
- self.imagepreview = ImagePreview()
- self.button = QtGui.QPushButton("Start")
- self.button.clicked.connect(self.imagepreview.startDownload)
- layout = QtGui.QVBoxLayout()
- layout.addWidget(self.button)
- layout.addWidget(self.imagepreview)
- self.setLayout(layout)
- if __name__ == "__main__":
- import sys
- try:
- app = QtGui.QApplication(sys.argv)
- except RuntimeError:
- pass
- mainwindow = MainWindow()
- mainwindow.show()
- sys.exit(app.exec_())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement