开发者社区> 问答> 正文

PyQt:在app中获取文件名称

我试图建立一个应用程序,将接受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)

它稍微修改了PyQT4教程中提供的拖放代码。 我无法让@ekhumoro的回答为我工作,但它给了我更多的地方去寻找,我发现PyQT4:拖放文件到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()

问题来源StackOverflow 地址:/questions/59378397/drag-files-from-desktop-to-gui

展开
收起
kun坤 2019-12-30 10:41:06 1608 0
1 条回答
写回答
取消 提交回答
  • QMimeData类有处理掉的url的方法:

    def dragEnterEvent(self, event):
        if event.mimeData().hasUrls():
            event.accept()
        else:
            event.ignore()
    
    def dropEvent(self, event):
        for url in event.mimeData().urls():
            path = url.toLocalFile().toLocal8Bit().data()
            if os.path.isfile(path):
                print path
                # do other stuff with path...
    
    2019-12-30 10:41:15
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
女性移动App安全攻防战 立即下载
汇聚云计算的生态核能——云市场,云上APP Store 立即下载
千万级用户直播App——服务端架构设计和思考 立即下载

相关实验场景

更多