from PyQt5.QtWidgets import QFrame, QLabel, QListWidget, QMainWindow, QStackedLayout, QToolBar, QAction, QStatusBar, QVBoxLayout, QWidget, QGridLayout, QSpacerItem, QSizePolicy from PyQt5.QtGui import QIcon, QPixmap from PyQt5.QtCore import Qt, QSize import typing class NixView(QMainWindow): def __init__(self, *args, **kwargs): super(NixView, self).__init__(*args, **kwargs) self.setWindowTitle("NixView") cw = CentralWidget(self) self.setCentralWidget(cw) self.create_actions() self.setStatusBar(QStatusBar(self)) def create_actions(self): self._file_open_action = QAction(QIcon("./icons/nix_open.png"), "Open", self) self._file_open_action.setStatusTip("Open nix file") self._file_open_action.triggered.connect(self.onFileOpenClick) self._file_close_action = QAction(QIcon("./icons/nix_close.png"), "Close", self) self._file_close_action.setStatusTip("Close nix file") self._file_close_action.triggered.connect(self.onFileCloseClick) self.create_toolbar() self.create_menu() def create_toolbar(self): self._toolbar = QToolBar("My main toolbar") self._toolbar.setIconSize(QSize(32, 32)) self._toolbar.addAction(self._file_open_action) self._toolbar.addAction(self._file_close_action) self.addToolBar(self._toolbar) def create_menu(self): pass def onFileOpenClick(self, s): print("click", s) def onFileCloseClick(self, s): print("click", s) class CentralWidget(QWidget): def __init__(self, parent=None) -> None: super().__init__(parent=parent) splash = SplashScreen() stack = QStackedLayout(self) stack.addWidget(splash) self.setLayout(stack) self.setStyleSheet("background-color: white;") class SplashScreen(QWidget): def __init__(self, parent=None) -> None: super().__init__(parent=parent) layout = QGridLayout() self.setLayout(layout) self.setStyleSheet("background-color: red;") label = QLabel() label.setPixmap(QPixmap("./icons/nixview256.png")) label.setAlignment(Qt.AlignCenter) layout.addWidget(label, 1, 1) verticalSpacer = QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding) verticalSpacer2 = QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding) hSpacer = QSpacerItem(400, 20, QSizePolicy.Maximum, QSizePolicy.Expanding) hSpacer2 = QSpacerItem(400, 20, QSizePolicy.Maximum, QSizePolicy.Expanding) layout.addItem(verticalSpacer, 0, 1) layout.addItem(verticalSpacer2, 2, 1) layout.addItem(hSpacer, 1, 0) layout.addItem(hSpacer2, 1, 2) frame = QFrame() l = QVBoxLayout() l.addWidget(QLabel("Recently opened files:")) l.addWidget(QListWidget()) frame.setLayout(l) layout.addWidget(frame, 3, 1)