2017-09-25 12 views
1

私は途中で他のアプリケーションを使用するアプリケーションを持っています(両方のアプリケーションが.uiファイルを使用しています)。したがって、SecondWindowに2番目のアプリケーションを作成し、MainWindowを非表示にします。今度はSecondWindowが閉じられた後にもう一度MainWindowと表示したいと思います。 the solution in the answerの作品が見つかりましたが、SecondWindowの背景はMainWindowの背景を使用しているため間違っています。 SecondWindowMainWindowのクラスに閉じられているかどうかを確認する方法はありますか?SecondWindowの親であるか、または親のために発生した背景の変更を防ぐには、MainWindowの親ですか?2番目のウィンドウが閉じているかどうかを調べる方法

私の現在のコードはやや次のようになります。

## 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

それは最初の子であることを第二のウィンドウのために実際には必要ありません。

ですから、このような何かを行うことができるはず:

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() 
関連する問題