Python拖拽图片到 窗体 显示图片
时间: 2023-06-19 21:07:29 浏览: 240
可以使用PyQt5库来实现这个功能。
首先需要在PyQt5中导入以下模块:
```python
from PyQt5.QtWidgets import QApplication, QWidget, QLabel
from PyQt5.QtGui import QPixmap
from PyQt5.QtCore import Qt
```
然后创建一个QWidget窗口,并在其中添加一个QLabel标签。在QLabel标签中显示图片,可以使用QPixmap类来加载图片并在QLabel中显示出来。
```python
class DragAndDropWidget(QWidget):
def __init__(self):
super().__init__()
self.setAcceptDrops(True) # 接收拖放事件
self.label = QLabel(self) # 创建标签
self.label.setAlignment(Qt.AlignCenter) # 居中显示
self.label.setText('Drag and drop image here') # 设置默认文本
self.label.setGeometry(0, 0, 400, 400) # 设置标签大小和位置
def dragEnterEvent(self, event):
if event.mimeData().hasImage: # 判断是否为图片
event.accept() # 接受拖放事件
else:
event.ignore()
def dropEvent(self, event):
if event.mimeData().hasImage:
image = QPixmap(event.mimeData().imageData())
self.label.setPixmap(image) # 在标签中显示图片
self.label.setText('') # 清除默认文本
```
在上述代码中,通过重写QWidget的dragEnterEvent和dropEvent方法,实现了拖拽事件的处理。当拖拽事件进入窗口时,会调用dragEnterEvent方法,判断是否为图片并接受拖放事件。当拖拽事件在窗口中释放时,会调用dropEvent方法,加载图片并在标签中显示出来。
最后,创建一个QApplication对象,将DragAndDropWidget窗口添加到其中,并显示出来。
```python
if __name__ == '__main__':
app = QApplication([])
window = DragAndDropWidget()
window.show()
app.exec_()
```
完整代码如下:
```python
from PyQt5.QtWidgets import QApplication, QWidget, QLabel
from PyQt5.QtGui import QPixmap
from PyQt5.QtCore import Qt
class DragAndDropWidget(QWidget):
def __init__(self):
super().__init__()
self.setAcceptDrops(True) # 接收拖放事件
self.label = QLabel(self) # 创建标签
self.label.setAlignment(Qt.AlignCenter) # 居中显示
self.label.setText('Drag and drop image here') # 设置默认文本
self.label.setGeometry(0, 0, 400, 400) # 设置标签大小和位置
def dragEnterEvent(self, event):
if event.mimeData().hasImage: # 判断是否为图片
event.accept() # 接受拖放事件
else:
event.ignore()
def dropEvent(self, event):
if event.mimeData().hasImage:
image = QPixmap(event.mimeData().imageData())
self.label.setPixmap(image) # 在标签中显示图片
self.label.setText('') # 清除默认文本
if __name__ == '__main__':
app = QApplication([])
window = DragAndDropWidget()
window.show()
app.exec_()
```
阅读全文