Python构建应用程序

时间:2017-04-28 11:21:39

标签: python qt pyqt5

所以这是问题所在: 我正在pyqt中构建一个应用程序:

  1. frame1.py

    from PyQt5 import QtWidgets, QtCore, QtGui
    import runpy, sys
    
    class LoginFrame(QtWidgets.QWidget):
    
        def __init__(self):
            super().__init__()
            self.logFrameSetup(self)
    
        def logFrameSetup(self, GuiWin):
                GuiWin.setWindowTitle('GuiWin')
                GuiWin.resize(450, 215)
    
                self.pushbutton = QtWidgets.QPushButton('Go To', GuiWin)
                self.pushbutton.clicked.connect(self.change)
    
        def change(self):
            try:
                runpy.run_path('frame2.py', run_name="__main__")
            except:
                pass
            finally:
                self.close()
    
    
    if __name__ == "__main__":
        app = QtWidgets.QApplication(sys.argv)
        ex = LoginFrame()
        ex.show()
        x = app.exec_()
        sys.exit(x)
    
  2. frame2.py

     from PyQt5 import QtCore, QtGui, QtWidgets
     import sys
     class MainTradingPlatform(QtWidgets.QMainWindow):
    
     def __init__(self):
        super().__init__()
    
        self.setupFrame(self)
    
     def setupFrame(self, frame2):
         frame2.setWindowTitle('2frame')
         frame2.resize(1200, 1000)
    
    
    if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    ex = MainTradingPlatform()
    ex.show()
    x = app.exec_()
    sys.exit(x)
    
  3. 现在这几乎是完美的,但是当我关闭frame2.py时,后台进程仍在进行中/正在运行 我想要实现的是通过关闭frame2.py,进程完成退出代码。 (终止)

    ps:在调用frame2.py之后,我还要终止frame1。

    感谢您的帮助,对不起我的回复。

1 个答案:

答案 0 :(得分:0)

当您使用runpy执行代码时,该进程与初始应用程序分离,关闭第二个应用程序的选项是覆盖closeEvent方法。

-(void)saveContext {
    NSError *error = nil;
    NSManagedObjectContext *managedObjectContext = 
    self.managedObjectContext;
    if (managedObjectContext != nil) {
        if ([managedObjectContext hasChanges] && ![managedObjectContext 
            save:&error]) {
        }
    }
}