Как выбрать несколько каталогов с 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())
Другие вопросы по тегам