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

时间:2017-12-27 05:54:23

标签: python-3.x qt pyqt4

我正在使用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()

1 个答案:

答案 0 :(得分:1)

在c ++中,您可以将widget对象设置为一个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