2017-06-03 91 views
0

我想让我的GUI在启动时运行,以在用户单击按钮时打开不同的GUI。所以,在我的启动文件,我有:从另一个GUI文件打开GUI文件PyQT5

class Startup(object): 
    def setup_ui(self, Dialog): 
     Dialog.setObjectName("Dialog") 
... 
     self.start_button = QtWidgets.QPushButton('', Dialog) 
     self.start_button.clicked.connect(self.start_program) 
... 
    def start_program(self): 
    # segmentation = QtWidgets.QApplication(sys.argv) 
    MainWindow = QtWidgets.QMainWindow() 
    ui = Ui_MainWindow() 
    ui.setupUi(MainWindow) 
    MainWindow.show() 
    # sys.exit(segmentation.exec_()) 
... 
if __name__ == "__main__": 
import sys 
app = QtWidgets.QApplication(sys.argv) 
Dialog = QtWidgets.QDialog() 
ui = Startup() 
ui.setup_ui(Dialog) 
Dialog.show() 
sys.exit(app.exec_()) 

我为我想启动这个样子的GUI主文件:

class Ui_MainWindow(object): 
    def setupUi(self, MainWindow): 
     font = QtGui.QFont("Times", 30, QtGui.QFont.Bold) 
     MainWindow.setObjectName("NBA Predictor") 
     MainWindow.resize(1150, 790) 
     self.centralwidget = QtWidgets.QWidget(MainWindow) 
... 

然而,当用户点击“开始”启动文件上的按钮,主屏幕会打开.1秒,然后立即关闭。我认为这是一个没有正确退出命令的问题。但是,如果我去掉在start_program功能的线路:

# segmentation = QtWidgets.QApplication(sys.argv) 

# sys.exit(segmentation.exec_()) 

当我点击开始按钮,窗口一秒钟,然后两个窗口关闭打开。有任何想法吗?

回答

0

由于Python GC而发生这种情况。保存MainWindow的参考,如:

self.mainWindow = QtWidgets.QMainWindow() 
self.mainWindow.show() 
相关问题