2017-11-20 27 views
1

방법에서 새 창을 열 수 없습니다 :나는 간단한 PyQt5 응용 프로그램을 개발하고 나는 다음과 같은 기능을 가진 부모 창에서 새 창을 엽니 다하려고

def park(self, N): 
    from time_dialog import T_MainWindow 
    ui = T_MainWindow(self, N) 
    ui.show() 

내가 노력하고 클래스 액세스 할 수 있습니다 :

if __name__ == "__main__": 
    import sys 
    app = QtWidgets.QApplication(sys.argv) 
    ui = T_MainWindow("", "") 
    ui.show() 
    sys.exit(app.exec_()) 
+0

무엇이 문제를 풀려고 했습니까? – eyllanesc

+0

예, 가지고 있고 새 창을 열 수 없습니다. 내 실수는 무엇입니까? –

+0

공원 기능을 구현했지만 결코 사용하지 않는다는 것을 알았습니다. – eyllanesc

답변

1

ㅁ : 개별적으로 실행하는 경우

class T_MainWindow(QtWidgets.QWidget): 
    def __init__(self, parent, N): 
     super().__init__() 
     self.PARENT = parent 
     self.N = N 
     self.setupUi() 

이 두 창을 사용하여 열 두 번째 예제에서 T_MainWindow을 열면 변수는 입니다.이므로 가비지 수집되지 않습니다. 그러나 park 메서드에서 열 때 변수는 로컬이므로 메서드가 반환 될 때 (따라서 윈도우가 표시되기 전에) 가비지 수집됩니다. 이 문제를 해결하기 위해 로컬 변수를 속성으로 변경하여 참조가 창에 유지되도록 할 수 있습니다.

def park(self, N): 
    from time_dialog import T_MainWindow 
    self.t_window = T_MainWindow(self, N) 
    self.t_window.show()