关闭主窗口后如何使弹出窗口自动关闭

Posted

技术标签:

【中文标题】关闭主窗口后如何使弹出窗口自动关闭【英文标题】:How to make pop up window close automatically after main window is closed 【发布时间】:2017-12-27 05:54:23 【问题描述】:

我正在使用 PyQT 创建 QMainWindow 窗口,该窗口在单击按钮时会打开另一个窗口。我的问题是,即使我关闭了生成它的主窗口,弹出窗口仍然显示。这与发布的here 非常相似,但用 C++ 编写,我只能使用 Python。如何在 Python 中实现答案?这是我的代码:

from PyQt4.QtGui import *
from PyQt4.QtCore import *
import sys

class Pycryptor:

    def mainGui(self):
        app = QApplication(sys.argv)
        #MainWindow
        self.mainWin = QMainWindow()
        self.mainWin.setGeometry(200,200,500,432)
        self.mainWin.show()
        #MenuBar
        mainMenu = self.mainWin.menuBar()
        mainMenu.setNativeMenuBar(False)
        aboutMenu = mainMenu.addMenu('A&bout')
        helpButton = QAction(QIcon(),'Help',self.mainWin)
        helpButton.triggered.connect(self.helpPopup)
        aboutMenu.addAction(helpButton)
        sys.exit(app.exec_())

    def helpPopup(self):
        self.popup = HelpWindow()
        self.popup.setGeometry(800,200,300,500)
        self.popup.show()

class HelpWindow(QWidget):
    def __init__(self):
        QWidget.__init__(self)

if __name__ == '__main__':
    p = Pycryptor()
    p.mainGui()

【问题讨论】:

HelpWindow 对象 setParent MainWindow 对不起,你能告诉我怎么做吗?我刚刚开始学习课程 【参考方案1】:

在 c++ 中,您可以将您的小部件对象设置为 mainWindow 对象。当父母被摧毁时,他将跟随他所有的孩子。

例如:

void MainWindow::on_pushButton_clicked()

    Form *fm = new Form();
    fm->setParent(this);
    fm->setWindowFlags(Qt::Window);
    fm->show();

我不知道如何创建这个 pyqt,但您可以阅读文档: http://pyqt.sourceforge.net/Docs/PyQt4/qwidget.html#setParent

【讨论】:

以上是关于关闭主窗口后如何使弹出窗口自动关闭的主要内容,如果未能解决你的问题,请参考以下文章

winform中一个窗口关闭后在主窗口上自动刷新显示的数据。谢谢

WINDOW窗口自动关闭

求一段css,在进入blog时候,窗口前自动弹出图片,几秒钟后自动关闭

MFC 中如何点击一个按钮,则主窗口关闭,在重新加载打开

怎么实现父窗口打开子窗口,子窗口关闭后自动刷新父窗口?

自动打开弹出窗口的最简单方法? [关闭]