2011-04-12 11 views

Répondre

6

Appeler mainwindow2.show() devrait travailler pour vous. Pourriez-vous donner un exemple plus complet de votre code? Il y a peut-être quelque chose qui ne va pas ailleurs.

EDIT: Code mis à jour pour afficher un exemple de masquage et d'affichage des fenêtres lors de l'ouverture et de la fermeture d'autres fenêtres.

from PyQt4.QtGui import QApplication, QMainWindow, QPushButton, \ 
      QLabel, QVBoxLayout, QWidget 
from PyQt4.QtCore import pyqtSignal 

class MainWindow1(QMainWindow): 
    def __init__(self, parent=None): 
     QMainWindow.__init__(self, parent) 
     button = QPushButton('Test') 
     button.clicked.connect(self.newWindow) 
     label = QLabel('MainWindow1') 

     centralWidget = QWidget() 
     vbox = QVBoxLayout(centralWidget) 
     vbox.addWidget(label) 
     vbox.addWidget(button) 
     self.setCentralWidget(centralWidget) 

    def newWindow(self): 
     self.mainwindow2 = MainWindow2(self) 
     self.mainwindow2.closed.connect(self.show) 
     self.mainwindow2.show() 
     self.hide() 

class MainWindow2(QMainWindow): 

    # QMainWindow doesn't have a closed signal, so we'll make one. 
    closed = pyqtSignal() 

    def __init__(self, parent=None): 
     QMainWindow.__init__(self, parent) 
     self.parent = parent 
     label = QLabel('MainWindow2', self) 

    def closeEvent(self, event): 
     self.closed.emit() 
     event.accept() 

def startmain(): 
    app = QApplication(sys.argv) 
    mainwindow1 = MainWindow1() 
    mainwindow1.show() 
    sys.exit(app.exec_()) 

if __name__ == "__main__": 
    import sys 
    startmain() 
+0

merci gris finalement fait. mais je veux rendre window1 disable et window2 enable et quand window2 close puis window1 est devenu renommable –

+0

J'ai changé le code de sorte que lorsque le second QMainWindow est montré le premier est caché. Lorsque le second QMainWindow est fermé, le premier sera à nouveau affiché. –

+0

yeh enfin fait merci beaucoup Gary –

Questions connexes