class Window(QMainWindow): conf = Settings.getInstance() def __init__(self, MainQtApp=None, *args, **kwargs): super(Window, self).__init__(MainQtApp, *args, **kwargs) self.setWindowTitle("Oceana Navigation Data Package") self.status = self.statusBar() self.mdiArea = QMdiArea(self) self.mdiArea.setHorizontalScrollBarPolicy(Qt.ScrollBarAsNeeded) self.mdiArea.setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded) self.mdiArea.subWindowActivated.connect(self.updateMenus) self.windowMapper = QSignalMapper(self) self.windowMapper.mapped[QWidget].connect(self.setActiveSubWindow) self.setCentralWidget(self.mdiArea) def setActiveSubWindow(self, window): if window: self.mdiArea.setActiveSubWindow(window) def updateMenus(self): hasMdiChild = (self.activeMdiChild() is not None) def activeMdiChild(self): activeSubWindow = self.mdiArea.activeSubWindow() if activeSubWindow: return activeSubWindow.widget() return None
import os import sys from PyQt5.Qt import QApplication from PyQt5 import QtGui from core.ui import Window from core import Settings if __name__ == "__main__": appconf = {} conf = Settings.getInstance() QApp = QApplication(sys.argv) QApp.setObjectName("Oceana") mainWindow = Window() if not QApp.objectName() in conf: conf[QApp.objectName()] = {} appconf = conf[QApp.objectName()] appconf["x"] = mainWindow.pos().x() appconf["y"] = mainWindow.pos().y() appconf["width"] = mainWindow.width() appconf["height"] = mainWindow.height() appconf["lookandfeel"] = "native" appconf = conf[QApp.objectName()] mainWindow.setMinimumSize(appconf.as_int("width"), appconf.as_int("height")) mainWindow.show() conf.write() sys.exit(QApp.exec_())