|
发表于 2024-4-7 21:59:34
|
显示全部楼层
非常抱歉,我混淆了窗口的概念。以下是一个修复后的代码示例,显示了三个窗口的打开和关闭:import sysimport timefrom PySide6.QtCore import Qt, QTimerfrom PySide6.QtWidgets import QApplication, QMainWindow, QPushButton, QVBoxLayout, QProgressBar, QWidgetclass BaseWindow(QMainWindow): def __init__(self): super().__init__() self.setWindowTitle("Base Window") self.resize(1440, 900) # 添加ESC事件 self.setFocusPolicy(Qt.StrongFocus) self.keyPressEvent = self.handle_escape # 创建退出按钮 exit_button = QPushButton("退出") exit_button.clicked.connect(self.close) toolbar = self.addToolBar("Exit Toolbar") toolbar.addWidget(exit_button) # 添加欢迎界面 welcome_widget = QWidget() welcome_layout = QVBoxLayout() welcome_layout.addWidget(QPushButton("欢迎界面")) welcome_widget.setLayout(welcome_layout) self.setCentralWidget(welcome_widget) def handle_escape(self, event): if event.key() == Qt.Key_Escape: self.close()class WindowA(BaseWindow): def __init__(self): super().__init__() self.setWindowTitle("Window A") # 创建按钮 button = QPushButton("进入下一个窗口") button.clicked.connect(self.show_window_b) self.centralWidget().layout().addWidget(button) def show_window_b(self): self.hide() # 隐藏当前窗口 window_b = WindowB() window_b.show() def closeEvent(self, event): # 在窗口关闭时,显示上一个窗口 window = self.parent() if isinstance(window, WindowB): window_a = WindowA() window_a.show()class WindowB(BaseWindow): def __init__(self): super().__init__() self.setWindowTitle("Window B") # 创建按钮 button = QPushButton("进入下一个窗口") button.clicked.connect(self.show_window_c) self.centralWidget().layout().addWidget(button) def show_window_c(self): self.hide() # 隐藏当前窗口 window_c = WindowC() window_c.show() def closeEvent(self, event): # 在窗口关闭时,显示上一个窗口 window = self.parent() if isinstance(window, WindowC): window_b = WindowB() window_b.show()class WindowC(BaseWindow): def __init__(self): super().__init__() self.setWindowTitle("Window C") # 创建按钮 button = QPushButton("回到第一个窗口") button.clicked.connect(self.show_window_a) self.centralWidget().layout().addWidget(button) def show_window_a(self): self.hide() # 隐藏当前窗口 window_a = WindowA() window_a.show() def closeEvent(self, event): # 在窗口关闭时,显示上一个窗口 window = self.parent() if isinstance(window, WindowA): window_c = WindowC() window_c.show()if __name__ == "__main__": app = QApplication(sys.argv) window_a = WindowA() window_a.show() sys.exit(app.exec())在这个示例中,我们创建了三个窗口类:WindowA、WindowB和WindowC,并在每个窗口类中添加了一个按钮。单击按钮将隐藏当前窗口,并显示下一个窗口。每个窗口类都重写了`closeEvent`方法,在窗口关闭时显示前一个窗口。通过这种方式,当关闭窗口C时,会显示窗口A,并且循环往复。希望这次的修改能够满足你的需求。再次抱歉给你带来了困扰,如有任何其他问题,请随时提问。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|