主窗口文件由QtDesigner设计生成转换为 .py 文件
一、单行文本框QLineEdit开启事件接收
# 开启事件接收
self.QLineEdit.setAcceptDrops(True)
二、重写事件过滤器
class QEventHandler(QtCore.QObject):
"""自定义类,实现文件拖拽获得路径"""
def eventFilter(self, obj, event):
"""
处理窗体内出现的事件,如果有需要则自行添加if判断语句;
目前已经实现将拖到控件上文件的路径设置为控件的显示文本;
"""
if event.type() == QtCore.QEvent.DragEnter:
event.accept()
if event.type() == QtCore.QEvent.Drop:
md = event.mimeData()
if md.hasUrls():
# 此处md.urls()的返回值为拖入文件的file路径列表,即支持多文件同时拖入
# 此处默认读取第一个文件的路径进行处理,可按照个人需求进行相应的修改
url = md.urls()[0]
obj.setText(url.toLocalFile())
return True
return super().eventFilter(obj, event)
三、QLineEdit添加事件过滤器
# 实现文件拖拽获取路径
self.QLineEdit.installEventFilter(QEventHandler(self))