Как создать диалоговое окно, которое позволяет выбрать как файлы, так и папки?

Как создать диалоговое окно, которое позволит пользователю выбирать как файлы, так и директории, и при этом будет возвращать их пути? <br/> <br/> Я использую PyQT5 в Python 3.12.0 и хотел бы реализовать данную функциональность, но не могу понять, почему в QFileDialog нет подобного параметра. Какой способ следует использовать?
  • 12 мая 2024 г. 1:10
Ответы на вопрос 1
Для создания диалогового окна, которое позволяет выбирать как файлы, так и папки, можно воспользоваться специальным флагом `QFileDialog.DontUseNativeDialog`. Этот флаг отключает использование нативного диалогового окна операционной системы и позволяет настроить диалоговое окно вручную.

Вот пример кода, который позволяет выбирать как файлы, так и папки:

```python
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QFileDialog

class FileDialog(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        button = QPushButton('Open File', self)
        button.clicked.connect(self.openDialog)
        
        self.show()

    def openDialog(self):
        options = QFileDialog.Options()
        options |= QFileDialog.DontUseNativeDialog
        fileName, _ = QFileDialog.getOpenFileName(self, 'Open File', '', 'All Files (*);;Folders', options=options)

        if fileName:
            print('Selected file/folder:', fileName)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = FileDialog()
    sys.exit(app.exec_())
```

Этот код создает окно с кнопкой "Open File", при нажатии на которую открывается диалоговое окно для выбора файлов или папок. Параметр 'All Files (*);;Folders' указывает на то, что пользователь может выбирать как файлы, так и папки. 

Надеюсь, этот код поможет вам решить вашу задачу.
Похожие вопросы