Программа - это не набор файлов, а набор взаимодействующих объектов, поэтому идея заключается в том, что оба окна находятся в одном месте, а при закрытии открывается другое окно.С другой стороны, PyQt рекомендует не модифицировать класс, сгенерированный Qt Designer, но создать новый класс, который наследует соответствующий виджет и использует начальный класс в качестве интерфейса (для получения дополнительной информации прочитайте документы ).
x.py
from PyQt4 import QtCore, QtGui
from y import YMainWindow
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
def _fromUtf8(s):
return s
try:
_encoding = QtGui.QApplication.UnicodeUTF8
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig)
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
self.button = QtGui.QPushButton("Close")
MainWindow.setCentralWidget(self.button)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
pass
class XMainWindow(QtGui.QMainWindow, Ui_MainWindow):
closed = QtCore.pyqtSignal()
def __init__(self, parent=None):
super(XMainWindow, self).__init__(parent)
self.setupUi(self)
self.button.clicked.connect(self.dummy)
@QtCore.pyqtSlot()
def dummy(self):
self.closed.emit()
self.close()
import sys
def main():
app = QtGui.QApplication.instance()
if app is None:
app = QtGui.QApplication(sys.argv)
wx = XMainWindow()
wy = YMainWindow()
wx.closed.connect(wy.show)
wx.show()
return app.exec_()
if __name__ == "__main__":
sys.exit(main())
y.py
from PyQt4 import QtCore, QtGui
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
def _fromUtf8(s):
return s
try:
_encoding = QtGui.QApplication.UnicodeUTF8
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig)
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName(_fromUtf8("MainWindow"))
MainWindow.resize(746, 503)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
pass
class YMainWindow(QtGui.QMainWindow, Ui_MainWindow):
def __init__(self, parent=None):
super(YMainWindow, self).__init__(parent)
self.setupUi(self)