Чтобы заменить центральный виджет в приложении с графическим пользовательским интерфейсом (GUI), конкретный метод и примеры кода будут зависеть от используемой вами платформы или библиотеки графического пользовательского интерфейса. Вот несколько распространенных методов с примерами кода с использованием различных популярных платформ графического интерфейса:
-
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()) -
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() -
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); } }