Вот очень простое исправление:
def open(self):
fileDialog = QFileDialog(self, 'Projects')
fileDialog.setAttribute(Qt.WA_QuitOnClose, False)
или даже проще:
def open(self):
fileDialog = QFileDialog(self.sender(), 'Projects')
Проблема здесь в том, что всякий раз, когда окно закрывается, Qt проверяет, чтобы увидетьесли другие окна также должны быть закрыты.В большинстве случаев оно автоматически закроет окно, если будут выполнены эти два условия:
- установлен атрибут
WA_QuitOnClose
, и - нетparent, или родитель скрыт
К сожалению, в вашем примере это верно как для файла-диалога, так и для дочернего окна, что приводит к закрытию обоих окон.Кроме того, поскольку quitOnLastWindowClosed по умолчанию имеет значение true, приложение также автоматически завершит работу.
Первое исправление, приведенное выше, работает, гарантируя, что хотя бы одно окно не имеет атрибута quit-on-closeустановить, а вторая работает, гарантируя, что родительский файл-диалога всегда будет видимым окном.