我创建的页面立即打开和关闭

Posted

技术标签:

【中文标题】我创建的页面立即打开和关闭【英文标题】:the page that I created opens and closes immediately 【发布时间】:2019-05-17 08:28:11 【问题描述】:

我想在按下按钮时打开第二个窗口。窗口立即打开和关闭。有人知道我在做什么错吗?

这是我的代码:


import sys
from PyQt5 import QtGui
from PyQt5.QtWidgets import QMainWindow, QPushButton, QLabel, QApplication

class FirstWindow(QMainWindow):
    def __init__(self):
        super(FirstWindow, self).__init__()
        self.setGeometry(50, 50, 500, 300)
        self.setWindowTitle('It\'s working!')
        self.initUI()
    def initUI(self):
        second_screen_btn = QPushButton('Open second screen', self)
        second_screen_btn.setGeometry(250, 100, 100, 100)
        second_screen_btn.clicked.connect(self.open_second_screen)
        self.show()

    def open_second_screen(self):
        second_window = SecondWindow()

class SecondWindow(QMainWindow):

    def __init__(self):
        super(SecondWindow, self).__init__()
        self.setGeometry(100, 100, 500, 300)
        self.setWindowTitle('This is a second window')
        self.initUI()

    def initUI(self):
        self.show()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    gui = FirstWindow()
    sys.exit(app.exec_())

【问题讨论】:

您好,请提供Minimal, Reproducible Example second_window更改为self.second_window PyQt: Why does new window close immediately after opening it的可能副本 【参考方案1】:

只需将您的 open_second_screen 更改为:

def open_second_screen(self):
    self.second_window = SecondWindow()
    self.second_window.show()

(当然,还要从其他类中删除 self.show())

这是 PyQt 经常出现的问题。如果没有将新窗口存储在变量中,则新窗口将被垃圾回收,并且second_window 变量会在函数结束时被删除,除非您将其存储为窗口实例的参数。

【讨论】:

以上是关于我创建的页面立即打开和关闭的主要内容,如果未能解决你的问题,请参考以下文章

Pyinstaller 可执行文件打开并立即关闭

材质 UI 日期选择器日历在页面渲染时立即打开

在 Cordova 中播放音频文件后如何打开页面?

如何在 wordpress 页面上包含带有自己的 css 和 javascript 的 php 页面? [关闭]

MUI——页面的创建显示关闭

如何为我的 Flash 页面创建 iPhone 应用程序? [关闭]