从另一个GUI文件PyQT5打开GUI文件

时间:2017-06-03 18:22:48

标签: python user-interface pyqt pyqt5

我正在尝试使用启动时运行的GUI在用户单击按钮时打开不同的GUI。所以在我的启动文件中,我有:

:#  python /home/check/openweathermap.py

我尝试启动的GUI的主文件如下所示:

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_( ))

然而,当用户点击"开始&#34>启动文件上的按钮,主屏幕打开时间为.1秒,然后立即关闭。我认为没有正确的退出命令是一个问题。但是,如果我取消注释start_program函数中的行:

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)
...

# segmentation = QtWidgets.QApplication(sys.argv)

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

1 个答案:

答案 0 :(得分:0)

这是因为Python GC。保存MainWindow的参考,例如:

self.mainWindow = QtWidgets.QMainWindow()
self.mainWindow.show()