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

Posted

技术标签:

【中文标题】从另一个 GUI 文件 PyQT5 打开 GUI 文件【英文标题】:Opening GUI file from another GUI file PyQT5 【发布时间】:2017-06-03 18:22:47 【问题描述】:

我试图让我在启动时运行的 GUI 在用户单击按钮时打开不同的 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_( ))

我尝试启动的 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)
...

但是,当用户单击启动文件上的“开始”按钮时,主屏幕会打开大约 0.1 秒,然后立即关闭。我认为没有正确的退出命令是一个问题。但是,如果我取消注释 start_program 函数中的行:

# segmentation = QtWidgets.QApplication(sys.argv)

# sys.exit(segmentation.exec_())

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

【问题讨论】:

【参考方案1】:

这是因为 Python GC。保存 MainWindow 的引用,例如:

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

【讨论】:

以上是关于从另一个 GUI 文件 PyQT5 打开 GUI 文件的主要内容,如果未能解决你的问题,请参考以下文章

使用 pyqt5 gui 创建一个 exe 文件

使用PyQt5编写一个简单的GUI程序

Pyqt5 - 文件对话框GUI关闭后无法运行代码

熟悉PyQt5 与 Eric6 的 GUI 开发

Python3+PyCharm+PyQt5配置进行GUI开发

PyQt5 GUI 仅在单击屏幕并重新打开时更新