如何获取QFileDialog以选择并返回多个文件夹[重复]

问题描述 投票:1回答:1

此问题已经在这里有了答案:

我希望用户能够选择多个文件夹,然后将这些文件夹的路径存储在列表中。

我该如何实现?我当前的QFileDialog看起来像这样:

str = QtGui.QFileDialog.getExistingDirectory(self, "Open Directory", /folder/subfolder, QtGui.QFileDialog.DontResolveSymlinks)

但是,当然,它只允许我选择一个文件夹。如何更改它以选择多个文件夹并以列表形式返回它们?

qt pyqt
1个回答
4
投票

据我所知,使用本机FileDialog无法做到这一点。但是,存在一种解决方法,您不使用本机对话框:

file_dialog = QFileDialog()
file_dialog.setFileMode(QFileDialog.DirectoryOnly)
file_dialog.setOption(QFileDialog.DontUseNativeDialog, True)
file_view = file_dialog.findChild(QListView, 'listView')

# to make it possible to select multiple directories:
if file_view:
    file_view.setSelectionMode(QAbstractItemView.MultiSelection)
f_tree_view = file_dialog.findChild(QTreeView)
if f_tree_view:
    f_tree_view.setSelectionMode(QAbstractItemView.MultiSelection)

if file_dialog.exec():
    paths = file_dialog.selectedFiles():

但是,此解决方法有点笨拙,但这是我所知道的除滚动自定义对话框之外的最佳解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.