Как создать новое приложение в одном приложении, используя PySide6

Вопрос или проблема

У меня есть панель меню с действиями НОВЫЙ, ОТКРЫТЬ, ВЫХОД и так далее. Мне нужно: когда я нажимаю действие НОВЫЙ, я хочу создать такое же приложение, как это. Как мне это сделать?

Нажмите кнопку действия НОВЫЙ, и она создаст такое же приложение, как это.

Ответ или решение

Для создания новой инстанции приложения в PySide6 в ответ на действие "NEW" в меню, вам нужно будет создать новый экземпляр основного окна вашего приложения. Это можно сделать, создав класс для вашего основного окна и инициализируя новый экземпляр этого класса при выборе действия "NEW". Вот подробное руководство по реализации этой функции.

Шаги для реализации:

  1. Создайте класс основного окна: Убедитесь, что у вас есть основной класс приложения, который наследует от QMainWindow.

  2. Реализуйте метод для создания нового приложения: Этот метод будет вызываться при выборе действия "NEW" в меню.

  3. Обработайте меню: Добавьте действия в меню и свяжите их с соответствующими методами.

Пример кода:

import sys
from PySide6.QtWidgets import QApplication, QMainWindow, QMenu, QAction, QVBoxLayout, QLabel, QWidget

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("Главное Окно")

        # Создание основного виджета
        self.central_widget = QWidget()
        self.layout = QVBoxLayout()
        self.label = QLabel("Это основное окно приложения.")
        self.layout.addWidget(self.label)
        self.central_widget.setLayout(self.layout)
        self.setCentralWidget(self.central_widget)

        # Создание меню
        menu_bar = self.menuBar()
        file_menu = menu_bar.addMenu("Файл")

        # Действия в меню
        new_action = QAction("Новый", self)
        new_action.triggered.connect(self.create_new_instance)
        file_menu.addAction(new_action)

        open_action = QAction("Открыть", self)
        file_menu.addAction(open_action)

        exit_action = QAction("Выход", self)
        exit_action.triggered.connect(self.close)
        file_menu.addAction(exit_action)

    def create_new_instance(self):
        # Создание нового приложения
        self.new_instance = MainWindow()
        self.new_instance.show()

if __name__ == "__main__":
    app = QApplication(sys.argv)
    main_window = MainWindow()
    main_window.show()
    sys.exit(app.exec())

Объяснение кода:

  1. Класс MainWindow: В этом классе мы определяем основное окно приложения, устанавливаем заголовок и добавляем центральный виджет с меткой.

  2. Создание меню: В методе __init__ создается меню "Файл", в котором добавляются действия "Новый", "Открыть" и "Выход".

  3. Метод create_new_instance: Этот метод создает новый экземпляр MainWindow и вызывает метод show(), чтобы показать его. Это реализует требуемую функциональность — при нажатии на действие "Новый" открывается новое окно приложения.

Заключение:

С помощью этого кода вы можете создавать несколько инстанций одного и того же приложения в PySide6. Это полезно, если вам нужно, чтобы пользователь работал с несколькими документами одновременно, так как каждое новое окно будет независимо от других. Вы можете расширять функционал, добавляя дополнительные элементы интерфейса и взаимодействия по мере необходимости.

Оцените материал
Добавить комментарий

Капча загружается...