如何保持QMainWindow开放?

时间:2017-11-19 22:23:42

标签: python python-3.x pyqt5 qmainwindow

我有一个使用Qt Creator创建的UI文件。当我通过PyCharm执行应用程序时,主窗口会短暂打开,然后关闭。我认为它是垃圾收集,但我不知道如何让它工作。有什么想法吗?

  

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的新手,所以请耐心等待。我看了几个不同的例子,但是当你的应用程序跨越多个源文件时,没有任何内容真正涵盖。感谢。

1 个答案:

答案 0 :(得分:1)

垃圾回收器删除它的注释是正确的,因为函数中创建的变量仅在调用函数时存在。为了能够执行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()