Для создания диалогового окна, которое позволяет выбирать как файлы, так и папки, можно воспользоваться специальным флагом `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' указывает на то, что пользователь может выбирать как файлы, так и папки.
Надеюсь, этот код поможет вам решить вашу задачу.