Browse Source

Linux Segmentation fault resolved

Akash 3 years ago
parent
commit
4631e5f262
4 changed files with 28 additions and 5 deletions
  1. 1 1
      baangt.py
  2. 3 1
      baangt/base/CliAndInteractive.py
  3. 4 1
      baangt/ui/pyqt/uiDesign.py
  4. 20 2
      baangt/ui/pyqt/uimain.py

+ 1 - 1
baangt.py

@@ -5,4 +5,4 @@ from multiprocessing import freeze_support
 
 if __name__ == '__main__':
     freeze_support()
-    run()
+    run()

+ 3 - 1
baangt/base/CliAndInteractive.py

@@ -120,7 +120,9 @@ def run():
             QtWidgets.QApplication.setStyle(QtWidgets.QStyleFactory.create('Windows'))
         controller = MainController()
         controller.show_main()
-        sys.exit(app.exec_())
+        appExec = app.exec_() 
+        controller.close()
+        sys.exit(appExec)
 
 
 

+ 4 - 1
baangt/ui/pyqt/uiDesign.py

@@ -1020,5 +1020,8 @@ if __name__ == "__main__":
     ui = Ui_MainWindow()
     ui.setupUi(MainWindow)
     MainWindow.show()
-    sys.exit(app.exec_())
+    appExec = app.exec_()
+    del MainWindow
+    del ui
+    sys.exit(appExec)
 

+ 20 - 2
baangt/ui/pyqt/uimain.py

@@ -68,7 +68,7 @@ class MainWindow(Ui_MainWindow):
     """
 
     switch_window = QtCore.pyqtSignal(str)
-
+    close_obj = QtCore.pyqtSignal()
     def __init__(self):
         ''' Init the super class '''
         super().__init__()
@@ -193,7 +193,13 @@ class MainWindow(Ui_MainWindow):
 
         QtCore.QMetaObject.connectSlotsByName(MainWindow)
 
+    def closeEvent(self, event):
+        print("closeevent")
+        self.close_obj.emit()
+        self.close()
+
     def close(self, event):
+        print("inside close")
         try:
             self.run_process.kill()
         except:
@@ -1583,12 +1589,24 @@ class MainController:
     def show_main(self):
         self.main = MainWindow()
         self.main.setupUi(self.window)
+        self.main.close_obj.connect(self.close)
         self.window.show()
 
+    def close(self):
+        self.window.deleteLater()
+        self.window.destroyed.connect(self.delVars)
+
+    def delVars(self):
+        del self.widget
+        del self.main
+        del self.window
+
 
 if __name__ == "__main__":
     import sys
     app = QtWidgets.QApplication(sys.argv)
     controller = MainController()
     controller.show_main()
-    sys.exit(app.exec_())
+    appExec = app.exec_()
+    del controller
+    sys.exit(appExec)