Как в pyqt5 сделать функцию закрытия основного окна, и после открытия нового?

В PyQT5 можно создать функцию для закрытия основного окна и открытия нового окна, следуя следующим шагам:

Шаг 1: Импортировать необходимые модули

from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QMessageBox
from PyQt5.QtCore import Qt

Шаг 2: Создать класс для основного окна, наследующийся от класса QMainWindow

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("Основное окно")
        
        self.button = QPushButton("Открыть новое окно", self)
        self.button.clicked.connect(self.open_new_window)
        self.setCentralWidget(self.button)
        
    def open_new_window(self):
        new_window = NewWindow()
        self.close()
        new_window.show()

Шаг 3: Создать класс для нового окна, наследующийся от класса QMainWindow

class NewWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("Новое окно")
        
        self.button = QPushButton("Закрыть окно", self)
        self.button.clicked.connect(self.close)
        self.setCentralWidget(self.button)

Шаг 4: Создать экземпляр класса QApplication и главного окна, а затем запустить приложение

if __name__ == "__main__":
    app = QApplication([])
    main_window = MainWindow()
    main_window.show()
    app.exec_()

В этом коде мы создаем два класса - MainWindow (Основное окно) и NewWindow (Новое окно). В основном окне мы создаем кнопку, которая при нажатии вызывает функцию open_new_window, которая закрывает основное окно и открывает новое окно. В новом окне также создается кнопка, которая вызывает функцию close, чтобы закрыть новое окно.

Вы можете указать нужные заголовки окон, разместить их виджеты и настроить имеющиеся элементы в соответствии со своими требованиями.