2017-12-28 45 views
1

私はPyQtを使用していますが、クリック信号の後にQDialogウィンドウを生成するQMainWindowがあります。 QMainWindowを閉じると、このQDialogが単に消えるだけです。私はこの問題のドキュメントとC++バージョンの多くを作ることができません。 QtのでQMainWindowが閉じられたときにQDialogを閉じる方法

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

class App: 

    def mainGui(self): 
     self.mainWin = QMainWindow() 
     self.mainWin.setGeometry(200,200,500,432) 
     self.mainWin.show() 
     mainMenu = self.mainWin.menuBar() 
     mainMenu.setNativeMenuBar(False) 
     aboutMenu = mainMenu.addMenu('A&bout') 
     helpButton = QAction(QIcon(),'Help',self.mainWin) 
     helpButton.setShortcut('F4') 
     helpButton.triggered.connect(self.helpPopup) 
     aboutMenu.addAction(helpButton) 

    def helpPopup(self): 
     self.popup = QDialog() 
     self.popup.setWindowTitle('Help') 
     self.popup.setGeometry(800,200,300,500) 
     self.popup.show() 

if __name__ == '__main__': 
    app = QApplication(sys.argv) 
    a = App() 
    a.mainGui() 
    sys.exit(app.exec_()) 

答えて

1

、親が子供を死亡した場合、したがって、PyQtはに、あまりにも、これだけself.mainWinにQDialogの親として渡します:

self.popup = QDialog(self.mainWin) 
+0

おかげで以下のコードです。親子オブジェクトは私がここで探してきた概念です。また、 'mainGui()'メソッドの内部に 'app = QApplication(sys.argv)'と 'sys.exit(app.exec _())'メソッドを配置する必要がありました。それ以外の場合は、親ウィンドウを閉じると子ウィンドウが開いたままになり、応答しなくなります。なぜそれが私にも教えてくれますか? – rej

+0

私はそれが奇妙だと分かりました、私はちょうどその変更を加え、それは正常に動作します、多分あなたはそのバグを持っている古いバージョンがあります。 – eyllanesc

+0

私はPython3.5とPyQt4を使用しています。とにかくもう一度ありがとう。 – rej

関連する問題