如何保持 QMainWindow 打开?

How to keep QMainWindow open?

我有一个使用 Qt Creator 创建的 UI 文件。当我通过 PyCharm 执行应用程序时,主 window 短暂打开,然后关闭。我假设它正在被垃圾收集,但我不确定如何让它工作。有什么想法吗?

Calculator.py

from PyQt5.QtWidgets import QApplication
import MainWindow
import sys


class Calculator(QApplication):

    def __init__(self):
        args = sys.argv
        QApplication.__init__(self, args)
        self.initializeApplication()

    def initializeApplication(self):
        app = MainWindow.MainWindow()
        app.show()


if __name__ == '__main__':
    app = Calculator()
    sys.exit(app.exec_())

MainWindow.py

from PyQt5 import uic
from PyQt5.QtWidgets import QMainWindow


class MainWindow(QMainWindow):

    def __init__(self):
        QMainWindow.__init__(self, None)
        uic.loadUi(r'interface/MainWindow.ui', self)
        self.initializeUI()

    def initializeUI(self):
        self.setWindowTitle('Calculator')

我是 Python 的新手,所以请多多包涵。我查看了几个不同的示例,但没有真正涵盖您的应用程序跨越多个源文件的情况。谢谢

垃圾收集器正在删除它的评论是正确的,因为在函数中创建的变量仅在函数被调用时存在。此外,为了能够执行 GUI,您必须调用 exec_() 来生成所需的主循环。

class Calculator(QApplication):

    def __init__(self):
        args = sys.argv
        QApplication.__init__(self, args)
        self.initializeApplication()
        self.exec_()

    def initializeApplication(self):
        self.app = MainWindow.MainWindow()
        self.app.show()


if __name__ == '__main__':
    app = Calculator()