【发布时间】:2012-01-24 00:09:18
【问题描述】:
我正在尝试设置一个应用程序,该应用程序将接受放入其中的 havin 文件。所以,我正在寻找一种方法来在它们被放入时提取路径。
现在,我为应用程序的右侧启用了拖放功能,它会接受放入的文本,但我不知道如何处理放入的文件。
我正在使用:
def PTE_dragEnterEvent(self, e):
if e.mimeData().hasFormat('text/plain'):
e.accept()
else:
e.ignore()
def PTE_dropEvent(self, e):
newText = self.ui.fileListPTE.toPlainText() + '\n\n' + e.mimeData().text()
self.ui.fileListPTE.setPlainText(newText)
稍微修改了Zetcode Drag and Drop tutorial中提供的代码。
我无法完全让 @ekhumoro 回答为我工作,但它给了我更多可以查看的地方,我发现 Drag and drop files into QListWidget 有帮助。
除了 ekhumoro 提出的建议之外,我还需要实现拖动移动事件。我最终使用的样子:
def dragEnterEvent(self, event):
if event.mimeData().hasUrls:
event.accept()
else:
event.ignore()
def dragMoveEvent(self, event):
if event.mimeData().hasUrls:
event.setDropAction(QtCore.Qt.CopyAction)
event.accept()
else:
event.ignore()
def dropEvent(self, event):
if event.mimeData().hasUrls:
event.setDropAction(QtCore.Qt.CopyAction)
event.accept()
newText = self.ui.fileListPTE.toPlainText()
for url in event.mimeData().urls():
newText += '\n' + str(url.toLocalFile())
self.ui.fileListPTE.setPlainText(newText)
self.emit(QtCore.SIGNAL("dropped"))
else:
event.ignore()
【问题讨论】:
-
我认为
hasUrls是一个函数,所以使用它的条件总是评估为True
标签: python events pyqt drag-and-drop pyside