Методы замены центрального виджета в приложениях с графическим интерфейсом примерами кода

Чтобы заменить центральный виджет в приложении с графическим пользовательским интерфейсом (GUI), конкретный метод и примеры кода будут зависеть от используемой вами платформы или библиотеки графического пользовательского интерфейса. Вот несколько распространенных методов с примерами кода с использованием различных популярных платформ графического интерфейса:

  1. PyQt5 (Python):

    import sys
    from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel
    class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("My App")
        self.setGeometry(100, 100, 400, 300)
        self.central_widget = QLabel("Original Central Widget")
        self.setCentralWidget(self.central_widget)
    def replace_central_widget(self):
        new_central_widget = QLabel("New Central Widget")
        self.setCentralWidget(new_central_widget)
        self.central_widget = new_central_widget
    if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = MainWindow()
    window.show()
    window.replace_central_widget()
    sys.exit(app.exec())
  2. tkinter (Python):

    import tkinter as tk
    class MainWindow(tk.Tk):
    def __init__(self):
        super().__init__()
        self.title("My App")
        self.geometry("400x300")
        self.central_widget = tk.Label(self, text="Original Central Widget")
        self.central_widget.pack()
    def replace_central_widget(self):
        new_central_widget = tk.Label(self, text="New Central Widget")
        new_central_widget.pack()
        self.central_widget.destroy()
        self.central_widget = new_central_widget
    if __name__ == "__main__":
    window = MainWindow()
    window.replace_central_widget()
    window.mainloop()
  3. JavaFX (Java):

    import javafx.application.Application;
    import javafx.scene.Scene;
    import javafx.scene.control.Label;
    import javafx.scene.layout.StackPane;
    import javafx.stage.Stage;
    public class MainWindow extends Application {
    @Override
    public void start(Stage primaryStage) {
        primaryStage.setTitle("My App");
        StackPane centralWidget = new StackPane();
        centralWidget.getChildren().add(new Label("Original Central Widget"));
        primaryStage.setScene(new Scene(centralWidget, 400, 300));
        primaryStage.show();
        replaceCentralWidget(centralWidget);
    }
    private void replaceCentralWidget(StackPane centralWidget) {
        StackPane newCentralWidget = new StackPane();
        newCentralWidget.getChildren().add(new Label("New Central Widget"));
        Scene scene = centralWidget.getScene();
        scene.setRoot(newCentralWidget);
    }
    public static void main(String[] args) {
        launch(args);
    }
    }