【已解决】pyqt5界面拖拽文件进入时,显示禁止图标,槽函数也没有进入。怎么办? 您所在的位置:网站首页 拖拽文件到这里怎么弄出来 【已解决】pyqt5界面拖拽文件进入时,显示禁止图标,槽函数也没有进入。怎么办?

【已解决】pyqt5界面拖拽文件进入时,显示禁止图标,槽函数也没有进入。怎么办?

2024-07-11 04:47| 来源: 网络整理| 查看: 265

我今天遇到了一个很无语的问题,不知道为啥,用 QMainwindow 创建了一个简单的界面,里面只有一个 Qlabel。 想要尝试拖拽文件进来,然后打印文件路径。但是怎么改都没反应。一直显示禁止的一个图标,类似于: 图源网络 一般来说,拖拽功能只要开启 setAcceptDrops(True) 就行了,但是无论我给谁设置都没用,修改信号量也没反应,搞了一晚上。

如果你也和我一样,建议你不要较劲,删掉自己所有代码,尝试用下面的代码测试一下,如果测试通过,就在这个代码基础上去修改吧。

这段代码在我这里是可以打印出拖拽进入的文件路径的:

import sys from PyQt5.QtWidgets import QPushButton, QWidget, QLabel, QApplication class MyLabel(QLabel): def __init__(self, title, parent): super().__init__(title, parent) self.setAcceptDrops(True) def dragEnterEvent(self, e): print(e.mimeData(), "Drag Entered") m = e.mimeData() if m.hasUrls(): e.accept() else: e.ignore() def dropEvent(self, e): print("dropEvent") m = e.mimeData() if m.hasUrls(): print("hasUrls") e.accept() print("正在处理") links = [] for url in e.mimeData().urls(): links.append(str(url.toLocalFile())) self.handleFiles(links) else: e.ignore() def handleFiles(self, files): for file in files: print(file) class Example(QWidget): def __init__(self): super().__init__() self.setAcceptDrops(True) self.initUI() def initUI(self): l = MyLabel("", self) l.resize(300, 300) l.move(0, 0) self.setGeometry(300, 300, 300, 300) if __name__ == '__main__': app = QApplication(sys.argv) ex = Example() ex.show() app.exec_()

路径就打印出来啦: 在这里插入图片描述 代码解释:只有 MyLabel + Example(QWidget)+ main 函数 MyLabel 300*300占满整个界面,由它来处理拖拽事件,分为“拖进”和“放开”。 然后通过 self.handleFiles(links) 打印出拖进来的所有文件路径。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有