from PyQt6.QtWidgets import QWidget, QApplication, QVBoxLayout, QLabel, QPushButton, QStackedLayout import sys class Window1(QWidget): def __init__(self): super().__init__() QLabel('第一个界面', self) self.setStyleSheet('background-color:green') class Window2(QWidget): def __init__(self): super().__init__() QLabel('第二个界面', self) self.setStyleSheet('background-color:red') class Window(QWidget): def __init__(self): super().__init__() self.setWindowTitle('多个窗口实例') self.stack() self.main() def stack(self): self.QStack = QStackedLayout() win1 = Window1() win2 = Window2() self.QStack.addWidget(win1) self.QStack.addWidget(win2) def main(self): container = QVBoxLayout() QW = QWidget() QW.setStyleSheet('background-color:grey') QW.setLayout(self.QStack) but1 = QPushButton("按钮1") but2 = QPushButton('按钮2') but1.clicked.connect(self.but_press1) but2.clicked.connect(self.but_press2) container.addWidget(QW) container.addWidget(but1) container.addWidget(but2) self.setLayout(container) def but_press1(self): self.QStack.setCurrentIndex(0) def but_press2(self): self.QStack.setCurrentIndex(1) if __name__ =='__main__': app = QApplication(sys.argv) w = Window() w.show() app.exec()
注意⚠️:对布局QStackedLayout前面加上self变为全局变量,下面在QVB布局里面又又添加上了一个窗口,这个窗口里面又设置布局self.QStack, 记住没有类似调用函数的括号, 用于不同界面显示。并使用函数:对象 . 信号. connect(需要调用的函数), 作为来为点击按钮这个事件关联到一个程序需要作出的反应函数。窗口对象 . setCurrentIndex(需要显示窗口的索引)。