pyqt拖入图片并显示
- 介绍
- 效果
- 代码
介绍
像拖入文本一样,把图片拖入到窗体中显示。
效果
代码
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QVBoxLayout
from PyQt5.QtGui import QPixmap, QDragEnterEvent, QDropEvent
from PyQt5.QtCore import Qt, QFile, QIODevice
from PyQt5.QtCore import QMimeDataclass ImageDropWidget(QWidget):def __init__(self):super().__init__()self.initUI()def initUI(self):# 创建布局layout = QVBoxLayout()# 创建QLabel用于显示图片self.label = QLabel(self)layout.addWidget(self.label)# 设置窗口布局self.setLayout(layout)# 设置窗口标题和大小self.setWindowTitle('Image Dropper')self.setGeometry(300, 300, 600, 400)# 允许窗口接受拖拽self.setAcceptDrops(True)def dragEnterEvent(self, event: QDragEnterEvent):# 检查拖拽的数据中是否包含文件if event.mimeData().hasUrls():for url in event.mimeData().urls():if url.scheme() == 'file':event.acceptProposedAction()returnevent.ignore()def dropEvent(self, event: QDropEvent):# 获取拖拽的文件URLif event.mimeData().hasUrls():for url in event.mimeData().urls():if url.scheme() == 'file':# 从URL获取文件路径file_path = url.toLocalFile()# 加载图片self.loadImage(file_path)# 接收操作event.acceptProposedAction()returnevent.ignore()def loadImage(self, file_path):# 加载图片并显示pixmap = QPixmap(file_path)self.label.setPixmap(pixmap.scaled(self.label.size(), Qt.KeepAspectRatio))if __name__ == '__main__':app = QApplication(sys.argv)ex = ImageDropWidget()ex.show()sys.exit(app.exec_())