Как решить проблему с параметром фильтра QFileDialog?

Я хочу создать файловый диалог, используя QFileDialog, чтобы выбрать аудиофайл для установки в QMediaPlayer с маской расширения файла (*.mp3, *.ogg, *.flac). К сожалению, это не работает, так как должно принимать последнее расширение как свойство фильтра.

Я пробовал это для PyQt5 и PySide2, результат тот же. В списке фильтров отображаются файлы с самым последним расширением, например, *.mp3 или *.flac.

audioFormats = "*.mp3, *.wav, *.ogg, *.wma, *.flac"
print(f"these are formats: {audioFormats}")
self.track, _ = self.getOpenFileName(parent=self, caption="Set track file", filter=f"Audio files ({audioFormats})")

Я ожидал, что он покажет файлы со всеми этими расширениями.

1 ответ

Решение

Как показывает пример документации, вы не должны использовать запятые для разделения расширений:

from PyQt5 import QtWidgets

if __name__ == '__main__':
    import sys
    app = QtWidgets.QApplication(sys.argv)
    audioFormats = "*.mp3 *.wav *.ogg *.wma *.flac" # without commas
    filename, _ = QtWidgets.QFileDialog.getOpenFileName(parent=None, 
        caption="Set track file",
        filter=audioFormats)
    if filename:
        print(filename)
Другие вопросы по тегам