如何保持 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()
我有一个使用 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()