Как создать диалоговое окно файла, которое возвращает пути к файлам для обоих выбранных файлов И каталогов? - PullRequest
1 голос
/ 21 апреля 2020

Я пытаюсь использовать QFileDialog, чтобы получить список путей выбранных папок И каталогов.

Я знаю, как сделать одну или другую, используя QFileDialog.getOpenFileNames и QFileDialog.getExistingDirectory, но не оба одновременно.

Документы на C ++ и другие вопросы в других местах, похоже, не помогли мне, независимо от того, сколько я гуглил.

Я использую PyQt5 5.14.2 и Python 3.8.2 on Windows.

Редактировать: мне удалось придумать следующее решение, не используя родной диалог Windows, и оно работает, но кажется «хакерским». Кто-нибудь может придумать лучшее решение?

from PyQt5 import QtWidgets


main_window = QtWidgets.QApplication([])

dlg = QtWidgets.QFileDialog()
dlg.setFileMode(QtWidgets.QFileDialog.Directory)
dlg.setOption(QtWidgets.QFileDialog.DontUseNativeDialog, True)

_list = dlg.findChild(QtWidgets.QListView, 'listView')
if _list:
    _list.setSelectionMode(QtWidgets.QAbstractItemView.MultiSelection)

tree = dlg.findChild(QtWidgets.QTreeView, 'treeView')
if tree:
    tree.setSelectionMode(QtWidgets.QAbstractItemView.MultiSelection)

selected = None

if dlg.exec():
    selected = dlg.selectedFiles()

print(selected)
...