Как выбрать несколько папок на разных уровнях, используя QFileDialog? - PullRequest
0 голосов
/ 28 апреля 2020

Мне нужно диалоговое окно с возможностью выбора нескольких папок, расположенных на разных уровнях. Я нашел это решение, но оно возвращает выбранное только на одном уровне:

from PyQt5 import QtWidgets
from PyQt5.QtWidgets import QFileDialog, QWidget, QPushButton, QVBoxLayout, QDialog, QApplication, QAbstractItemView


class FileDialog(QFileDialog):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.setFileMode(QFileDialog.DirectoryOnly)
        self.setOption(QFileDialog.DontUseNativeDialog, True)

        self.findChild(QtWidgets.QListView).setSelectionMode(QAbstractItemView.MultiSelection)
        self.findChild(QtWidgets.QTreeView).setSelectionMode(QAbstractItemView.MultiSelection)

    def accept(self):
        super(FileDialog, self).accept()


class Window(QWidget):
    def __init__(self):
        super(Window, self).__init__()
        self.button = QPushButton('Test', self)
        self.button.clicked.connect(self.handleButton)
        layout = QVBoxLayout(self)
        layout.addWidget(self.button)

    def handleButton(self):
        dialog = FileDialog(self, 'Directories select dialog', '.')
        if dialog.exec_() == QDialog.Accepted:
            print(dialog.selectedFiles())


if __name__ == '__main__':

    import sys
    app = QApplication(sys.argv)
    window = Window()
    window.show()
    sys.exit(app.exec_())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...