如何停止第二个PyQt5 QMainWindow关闭?

时间:2018-12-05 06:02:04

标签: python pyqt pyqt5 qmainwindow

我有一个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

打开新窗口后,它将立即关闭,仅留下第一个窗口。我尝试了许多解决方案,并阅读了在这里可以找到的所有相关内容。我的理解是,窗口以某种方式超出了范围,因此被垃圾回收了。

我在这里尝试了解决方法:

我仍然茫然。我想念什么?

0 个答案:

没有答案