Kaznachei Asked:2020-01-13 02:46:46 +0000 UTC2020-01-13 02:46:46 +0000 UTC 2020-01-13 02:46:46 +0000 UTC 使用拖放功能将图像从您的应用程序拖放到您的网站 772 有一个应用程序可以通过QLabel和显示图片QPixmap。 有一个网站,您可以使用 上传照片Drag and Drop。 我怎样才能做到这一点,以便我可以将图像从我的应用程序拖放到站点? 也许图片需要以不同的方式显示? python 1 个回答 Voted Best Answer S. Nick 2020-01-13T09:30:15Z2020-01-13T09:30:15Z 我为您编写了一个应用程序,它通过QLabel和显示图片QPixmap。 我找到了一个网站https://ru.stackoverflow.com,您可以在其中使用 上传图片Drag and Drop,我在其中写下答案: 我已在应用程序中标记了执行您想要的操作的行: 主文件 from PyQt5.Qt import * class DraggableLabelImage(QLabel): def __init__(self, path, parent): super(DraggableLabelImage, self).__init__(parent) self.path = path self.setPixmap(QPixmap(self.path).scaled(150, 150)) # 3 def mousePressEvent(self, event): if event.button() == Qt.LeftButton: self.drag_start_position = event.pos() def mouseMoveEvent(self, event): if not (event.buttons() & Qt.LeftButton): return if (event.pos() - self.drag_start_position).manhattanLength() < QApplication.startDragDistance(): return # Класс QDrag обеспечивает поддержку перетаскивания данных на основе MIME-based drag = QDrag(self) # 4 # Класс QMimeData предоставляет контейнер для данных, # в котором записывается информация о его типе MIME. mimedata = QMimeData() # 5 # QMimeData::setUrls(const QList<QUrl> &urls) # Устанавливает URL-адреса, хранящиеся в объекте данных MIME, на те, # которые указаны в URL-адресах. # URL-адреса соответствуют MIME-типу text/uri-list. # Начиная с Qt 5.0, setUrls также экспортирует URL-адреса в виде простого текста ... mimedata.setUrls([QUrl.fromLocalFile(self.path)]) # 6 drag.setMimeData(mimedata) pixmap = QPixmap(self.size()) painter = QPainter(pixmap) painter.drawPixmap(self.rect(), self.grab()) painter.end() drag.setPixmap(pixmap) drag.setHotSpot(event.pos()) drag.exec_(Qt.CopyAction | Qt.MoveAction) class MainWindow(QMainWindow): def __init__(self): super(MainWindow, self).__init__() path = "D:/_Qt/img/head.jpg" # 1 self.centralWidget = QWidget() self.setCentralWidget(self.centralWidget) self.labelImage = DraggableLabelImage(path, self) # 2 self.layout = QHBoxLayout(self.centralWidget) self.layout.addWidget(self.labelImage, alignment=Qt.AlignCenter) if __name__ == '__main__': import sys app = QApplication(sys.argv) mw = MainWindow() mw.show() sys.exit(app.exec_()) 头.jpg
我为您编写了一个应用程序,它通过
QLabel和显示图片QPixmap。我找到了一个网站
https://ru.stackoverflow.com,您可以在其中使用 上传图片Drag and Drop,我在其中写下答案:我已在应用程序中标记了执行您想要的操作的行:
主文件
头.jpg