#python #pyqt5 #file-extension #qfiledialog #mido
#python #pyqt5 #расширение файла #qfiledialog #mido
Вопрос:
Я создал подкласс для опции открытия файла. Наряду с PYQT5 я импортировал библиотеку python Mido amp; py-midi для чтения MIDI-файлов. Если моя логика верна. Я буду использовать FileDialog PYQT5 для извлечения файла, присвоения его переменной, а затем использовать Mido для чтения указанного MIDI-файла, после чего я буду использовать py-midi для редактирования этих файлов
class OpenDialog(QFileDialog):
def __init__(self, *args, **kwargs):
super(OpenDialog, self).__init__(*args, **kwargs)
self.setWindowTitle("Open")
self.setFixedSize(1000, 450)
buttons = QDialogButtonBox.Open | QDialogButtonBox.Cancel
self.buttonBox = QDialogButtonBox(buttons)
self.buttonBox.accepted.connect(self.accept)
self.buttonBox.rejected.connect(self.reject)
self.layout = QVBoxLayout()
self.layout.addWidget(self.buttonBox)
self.setLayout(self.layout)
# OpenedFile =
Я закомментировал OpenedFile, потому что планирую использовать это как переменную для ссылки на открытые файлы. Однако я не уверен, как это можно сделать в PYQ5. Кроме того, как это сделать с определенным расширением файла.
Комментарии:
1. Ваш вопрос неясен, не могли бы вы объяснить мне лучше
Ответ №1:
Я полагаю, вы немного сбиты с толку тем, как работает QFileDialog.
Прежде всего, по умолчанию Qt пытается использовать собственное диалоговое окно файла, предоставляемое системой, поэтому, как правило, вы не должны пытаться создавать свои собственные с помощью подклассов, если только вам не нужно особое поведение.
Затем QFileDialog — это QDialog, который уже имеет свой собственный (частный) макет и виджеты, включая область, в которой отображаются файлы и папки, текстовое поле для пути и стандартные кнопки открытия / отмены.
Поскольку вам нужно только открыть файл определенного типа, нет абсолютно никакой необходимости в подклассах, как объяснено в самом начале документации:
Самый простой способ создать QFileDialog — использовать статические функции.
Они перечислены в статических элементах, и вы, вероятно, заинтересованы в getOpenFileName()
; обратите внимание, что статические функции для файлов (не для каталогов) всегда возвращают кортеж, включающий пути и выбранный фильтр типов файлов:
def showOpenFileDialog(self):
fileName, filter = QFileDialog.getOpenFileName(self, 'Open file',
'some/default/path/', 'MIDI files (*.mid)')
if fileName:
self.openMidiFile(fileName)