Как выбрать несколько каталогов с KFileDialog?
С PyKDE4.kio
выбрать несколько файлов, которые я могу использовать KFileDialog.getOpenFileNames
(вместо KFileDialog.getOpenFileName
). Что я могу сделать, если я хочу выбрать несколько каталогов? Есть только KFileDialog.getExistingDirectory
,
С помощью KFileDialog.getOpenFileNames(filter = 'inode/directory')
и выбор нескольких папок показывает ошибку:
Было выбрано несколько папок, и это диалоговое окно не принимает папки, поэтому невозможно решить, какую из них ввести. Пожалуйста, выберите только одну папку, чтобы перечислить ее.
1 ответ
Решение
Я нашел решение от JohannesMunk на qtcentre.org и перевел его на python
import sys
from PyQt5.QtWidgets import (QFileDialog, QAbstractItemView, QListView,
QTreeView, QApplication, QDialog)
class getExistingDirectories(QFileDialog):
def __init__(self, *args):
super(getExistingDirectories, self).__init__(*args)
self.setOption(self.DontUseNativeDialog, True)
self.setFileMode(self.Directory)
self.setOption(self.ShowDirsOnly, True)
self.findChildren(QListView)[0].setSelectionMode(QAbstractItemView.ExtendedSelection)
self.findChildren(QTreeView)[0].setSelectionMode(QAbstractItemView.ExtendedSelection)
qapp = QApplication(sys.argv)
dlg = getExistingDirectories()
if dlg.exec_() == QDialog.Accepted:
print(dlg.selectedFiles())