from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
import sys
class LineEditEx(QLineEdit):
def __init__(self, parent=None):
super().__init__(None, parent)
self.setGeometry(50, 50, 100, 20)
self.setAcceptDrops(True)
self.setDragEnabled(True) # 开启可拖放事件
def dragEnterEvent(self, QDragEnterEvent):
e = QDragEnterEvent # type:QDragEnterEvent
print('type:', e.type()) # 事件的类型
print('pos:', e.pos()) # 拖放位置
print(e.mimeData().urls()) # 文件所有的路径
print(e.mimeData().text()) # 文件路径
print(e.mimeData().formats()) # 支持的所有格式
print(e.mimeData().data('text/plain')) # 根据mime类型取路径 值为字节数组
print(e.mimeData().hasText()) # 是否支持文本文件格式
if e.mimeData().hasText():
e.accept()
else:
e.ignore()
def dropEvent(self, e):
self.setText(e.mimeData().text()) #如果之前设置ignore 为False 这里将不会生效
class Example(QMainWindow):
def __init__(self):
super().__init__()
self.setUi()
def setUi(self):
self.setGeometry(100, 100, 300, 300)
self.setWindowTitle('demo_ui_2')
self.textEdit = LineEditEx(self)
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())