2017-11-19 15 views
0

Qt Creator를 사용하여 만든 UI 파일이 있습니다. PyCharm을 통해 응용 프로그램을 실행하면 기본 창이 잠깐 열렸다가 닫힙니다. 쓰레기 수거 중이라고 가정하고 있지만 어떻게 작동 시킬지 모르겠습니다. 어떤 아이디어?QMainWindow를 열어 두는 방법?

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') 

은 그래서 나와 함께 곰하시기 바랍니다 파이썬에 새로 온 사람. 몇 가지 다른 예제를 살펴 보았지만 애플리케이션이 여러 소스 파일에 걸쳐있을 때 실제로 다루지는 않습니다. 감사.

답변

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() 
+0

완벽하게 작동하는 것 같습니다. 감사합니다. 이 작업을 수행하는 더 깨끗한 방법이 있습니까? 내가 읽은 모든 것과 내가 본 모범은이 다른 방법에 관한 것처럼 보입니다. –

+0

이 방법은 적당합니다. 정답으로 표시하는 것을 잊지 마십시오. – eyllanesc