from PyQt4 import QtCore, QtGui import sys class MyWidgetKomand(QtGui.QWidget): def __init__(self, parent=None): QtGui.QWidget.__init__(self, parent) self.label = QtGui.QLabel("") self.box = QtGui.QVBoxLayout() self.box.addWidget(self.label) self.setLayout(self.box) class MyWindow(QtGui.QMainWindow): def __init__(self, parent=None): QtGui.QMainWindow.__init__(self, parent) self.mdi_area = QtGui.QMdiArea() self.setCentralWidget(self.mdi_area) self.add_menu() def add_menu(self): self.menuStat = QtGui.QMenu("&Статистика") self.actKomand = QtGui.QAction("&Командировки", None) self.actKomand.triggered.connect(self.on_komand) self.menuStat.addAction(self.actKomand) self.menuBar().addMenu(self.menuStat) def on_komand(self): komand = MyWidgetKomand() subWindow = self.mdi_area.addSubWindow(komand) subWindow.setAttribute(QtCore.Qt.WA_DeleteOnClose) subWindow.resize(600, 250) subWindow.setWindowTitle("Командировки") subWindow.show() app = QtGui.QApplication(sys.argv) window = MyWindow() window.setWindowTitle("") window.resize(700, 350) window.show() sys.exit(app.exec_())
Вопрос в следующем, как сделать что-бы метод on_komand создавал окно только при первичном вызове, а при последующих:
1. Если окно существует - делал его активным.
2. Если окно было закрыто - открывал его снова.
Я понимаю что нужно использовать метод setActiveSubWindow(), но как реализовать логику проверки. В меню будут и другие пункты.