2017-06-03 115 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()