这是我为此创建的自定义小部件:
from PySide2.QtCore import *
from PySide2.QtWidgets import *
from PySide2.QtGui import *
import os
class DragDropWidget(QWidget):
def __init__(self, parent=None):
super(DragDropWidget, self).__init__(parent)
self.setAcceptDrops(True)
def dragEnterEvent(self, event):
if event.mimeData().hasUrls:
event.accept()
else:
event.ignore()
def dragMoveEvent(self, event):
if event.mimeData().hasUrls:
if len(event.mimeData().urls()) != 1:
event.ignore()
else:
event.setDropAction(Qt.CopyAction)
event.accept()
else:
event.ignore()
def dropEvent(self, event):
if event.mimeData().hasUrls:
event.setDropAction(Qt.CopyAction)
event.accept()
if len(event.mimeData().urls()) != 1:
event.ignore()
else:
url = event.mimeData().urls()[
0].toLocalFile()
if os.path.exists(url):
self.emit(SIGNAL("dropped"), url)
else:
event.ignore()
我可以从 dropEvent 函数打印出文件的位置,但无法使用 connect 从主函数访问它。我的主要功能有以下几行:
self.connect(self.ui.DragDropEncode, SIGNAL("dropped"), self.add_file)
def add_file(self, file):
print(file)
我已经使用以下命令从另一个文件导入了我的用户界面:
from Main_UI import Ui_MainWindow
我有这个小部件的以下代码:
self.DragDropEncode = DragDropWidget(self.AddFileEncode)
self.DragDropEncode.setAcceptDrops(True)
当我运行主文件时,出现以下错误:
main.py:55: RuntimeWarning: MetaObjectBuilder::addMethod: Invalid method signature provided for "dropped"
self.connect(self.ui.DragDropEncode, SIGNAL("dropped"), self.add_file)
此外,删除文件绝对没有任何作用。
我仍然不明白为什么会出现这个错误。任何帮助将非常感激。谢谢你!
慕容森
相关分类