如何确定第二个窗口是否关闭

时间:2017-09-25 14:00:53

标签: python pyqt5

我有一个应用程序在中途使用其他应用程序(两个应用程序都使用.ui个文件)。因此,我在SecondWindow中创建了第二个应用程序并隐藏了MainWindow。现在,我希望在MainWindow关闭后再次显示SecondWindow。我发现the solution in the answer有效,但现在SecondWindow的背景是错误的,因为它使用MainWindow的背景。有没有办法找出SecondWindowMainWindow的课程中是否关闭MainWindow,而SecondWindow## Define main window class from template path = os.path.dirname(os.path.abspath(__file__)) uiFile = os.path.join(path, 'test.ui') Ui_MainWindow, QtBaseClass = uic.loadUiType(uiFile) uiFile2 = os.path.join(path, 'monitor.ui') WindowTemplate, SecondWindowClass = pg.Qt.loadUiType(uiFile2) class SecondWindow(SecondWindowClass): def closeThis(self): self.close() self.parent().show() def __init__(self, parent): super(SecondWindow, self).__init__(parent) # ensure this window gets garbage-collected when closed self.setWindowTitle('pyqtgraph example: Qt Designer') self.ui = WindowTemplate() self.ui.setupUi(self) self.show() class MainWindow(QtGui.QMainWindow, Ui_MainWindow): def showSecond(self): self.second.show() self.hide() def __init__(self): QtGui.QMainWindow.__init__(self) Ui_MainWindow.__init__(self) self.ui=uic.loadUi(uiFile, self) self.setupUi(self) self.show() self.second = SecondWindow(self) self.second.hide() self.ui.end_button.clicked.connect(lambda x:self.showSecond()) win = MainWindow() if __name__ == '__main__': if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'): QtGui.QApplication.instance().exec_() 的父母,或者是为了防止父母造成的背景变化?

我目前的代码看起来有点像这样:

{{1}}

1 个答案:

答案 0 :(得分:1)

第二个窗口实际上并不需要成为第一个窗口的孩子。

所以你应该可以这样做:

class SecondWindow(SecondWindowClass):    
    def closeThis(self):
        self.close()
        self.first.show()

    def __init__(self, first):
        super(SecondWindow, self).__init__()
        self.first = first
        ...

class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
     def showSecond(self):
        self.second.show()
        self.hide()

     def __init__(self):
        ...
        self.second = SecondWindow(self)
        self.second.hide()