我有一个QMainWindow,它由以下代码在名为main.py的文件中启动,
if __name__ == '__main__':
app = QApplication(sys.argv)
window = QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(window)
window.show()
sys.exit(app.exec_())
它从第一个QMainWindow开始,上面有许多不同的QtWidgets。即,一个QActionButton触发后,将连接到一个方法,该方法应打开另一个QMainWindow,上面带有不同的QtWidgets。这是代码,缩短了
class Ui_MainWindow(QtWidgets.QMainWindow):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.setEnabled(True)
self.actionSwitch_Option.triggered.connect(self.userWindow)
def userWindow(self):
window = QtWidgets.QMainWindow()
ui = Ui_Select()
ui.setup_Ui(window)
window.show()
return window
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
打开第二个窗口的代码包含在第一个窗口的代码中。
def userWindow(self):
window = QtWidgets.QMainWindow()
ui = Ui_Select()
ui.setup_Ui(window)
window.show()
return window
这是第二个窗口的代码的简化版本
class Ui_Select(QtWidgets.QMainWindow):
def setup_Ui(self, SelectOption):
SelectOption.setObjectName("SelectOption")
SelectOption.resize(414, 325)
self.userSelectButtonBox = QtWidgets.QDialogButtonBox(SelectOption)
def retranslateUi(self, SelectOption):
_translate = QtCore.QCoreApplication.translate
打开新窗口后,它将立即关闭,仅留下第一个窗口。我尝试了许多解决方案,并阅读了在这里可以找到的所有相关内容。我的理解是,窗口以某种方式超出了范围,因此被垃圾回收了。
我在这里尝试了解决方法:
我仍然茫然。我想念什么?