class PasteToUpload(QMainWindow): def __init__(self): super(PasteToUpload, self).__init__() self.initUI() def initUI(self): self.resize(290, 150) self.setWindowTitle('PasteToUpload') font = QFont('Helvetica', 16) self.label = QLabel('Ctrl+V', self) self.edit = QLineEdit(self) self.label.setFont(font) self.label.move(45, 25) self.edit.move(45, 85) self.label.setFixedWidth(250) self.edit.setFixedWidth(200) self.edit.setReadOnly(True) self.edit.setFocusPolicy(Qt.NoFocus) self.show() def __sendPost(self, base64): value = { 'key': API_KEY, 'image': base64 } data = urllib.urlencode(value) f = urllib2.urlopen( url='http://api.imgur.com/2/upload.json', data=data ) return json.load(f) def keyPressEvent(self, e): if e.matches(QKeySequence.Paste): clipboard = QApplication.clipboard() mimeData = clipboard.mimeData() if mimeData.hasImage(): image = clipboard.image() byteArray = QByteArray() buf = QBuffer(byteArray) buf.open(QIODevice.WriteOnly) image.save(buf, "PNG") self.label.setText('Uploading') self.thread = NetThread(str(byteArray.toBase64())) self.thread.finished.connect(self.onThreadEnd) self.thread.start() else: self.label.setText('No picture in clipboard') def onThreadEnd(self): url = self.thread.getResult() self.edit.setText(url) QApplication.clipboard().setText(url) self.label.setText('Finish (URL in clipboard)')