from PyQt5.QtWidgets import * from PyQt5.QtCore import * class Page1(QWidget): def __init__(self): super().__init__() layout = QVBoxLayout() label = QLabel("这是页面 1") layout.addWidget(label) self.setLayout(layout) class Page2(QWidget): def __init__(self): super().__init__() layout = QVBoxLayout() label = QLabel("这是页面 2") layout.addWidget(label) self.setLayout(layout) class Page3(QWidget): def __init__(self): super().__init__() layout = QVBoxLayout() label = QLabel("这是页面 3") layout.addWidget(label) self.setLayout(layout) class Page4(QWidget): def __init__(self): super().__init__() layout = QVBoxLayout() label = QLabel("这是页面 4") layout.addWidget(label) self.setLayout(layout) class MainWindow(QMainWindow): def __init__(self): super(MainWindow, self).__init__() self.setWindowTitle("多页面切换示例") # 创建顶部的水平布局 top_layout = QHBoxLayout() # 创建页面切换按钮 self.page1_button = QPushButton("页面 1") self.page2_button = QPushButton("页面 2") self.page3_button = QPushButton("页面 3") self.page4_button = QPushButton("页面 4") # 将按钮添加到水平布局 top_layout.addWidget(self.page1_button) top_layout.addWidget(self.page2_button) top_layout.addWidget(self.page3_button) top_layout.addWidget(self.page4_button) # 创建页面容器 self.stacked_widget = QStackedWidget() self.page1 = Page1() self.page2 = Page2() self.page3 = Page3() self.page4 = Page4() self.stacked_widget.addWidget(self.page1) self.stacked_widget.addWidget(self.page2) self.stacked_widget.addWidget(self.page3) self.stacked_widget.addWidget(self.page4) # 创建主布局,并将顶部布局和页面容器添加进去 main_layout = QVBoxLayout() main_layout.addLayout(top_layout) main_layout.addWidget(self.stacked_widget) # 创建一个中心部件,并设置布局 central_widget = QWidget() central_widget.setLayout(main_layout) # 设置主窗口的中心部件 self.setCentralWidget(central_widget) # 连接按钮的信号和槽,以切换页面 self.page1_button.clicked.connect(lambda: self.stacked_widget.setCurrentWidget(self.page1)) self.page2_button.clicked.connect(lambda: self.stacked_widget.setCurrentWidget(self.page2)) self.page3_button.clicked.connect(lambda: self.stacked_widget.setCurrentWidget(self.page3)) self.page4_button.clicked.connect(lambda: self.stacked_widget.setCurrentWidget(self.page4)) if __name__ == "__main__": app = QApplication([]) window = MainWindow() window.show() app.exec_()