def resizeEvent(self, event=None): ''' Helps resize shadow widget ''' position_x = (self.frameGeometry().width() - self.shadow_widget.frameGeometry().width()) / 2 position_y = (self.frameGeometry().height() - self.shadow_widget.frameGeometry().height()) / 2 self.shadow_widget.move(position_x, position_y) w = self.frameGeometry().width() h = self.frameGeometry().height() self.shadow_widget.resize(QtCore.QSize(w, h)) if event: super().resizeEvent(event)
def __init__(self, parent=None): QtWidgets.QWidget.__init__(self, parent) self.setWindowTitle("Project Manager") self.resize(1200, 800) self.projects = {} layout = QtWidgets.QVBoxLayout() # Main control ctrl_button_w = 30 ctrl_button_h = 30 # Calculate icon size icon_size = QtCore.QSize(ctrl_button_w - 4, ctrl_button_h - 4) main_control_layout = QtWidgets.QHBoxLayout() database_label = QtWidgets.QLabel() # Main buttons - create create_button = QtWidgets.QPushButton() create_icon = qta.icon("fa.plus-square", color=style.colors.light) create_button.setIconSize(icon_size) create_button.setFixedWidth(ctrl_button_w) create_button.setFixedHeight(ctrl_button_h) create_button.setIcon(create_icon) create_button.setStyleSheet(cbstyle.flat_button) # Main buttons - refresh refresh_button = QtWidgets.QPushButton() refresh_icon = qta.icon("fa.refresh", color=style.colors.light) refresh_button.setIconSize(icon_size) refresh_button.setFixedWidth(ctrl_button_w) refresh_button.setFixedHeight(ctrl_button_h) refresh_button.setIcon(refresh_icon) refresh_button.setStyleSheet(cbstyle.flat_button) # Project switch control projects_label = QtWidgets.QLabel("Project:") projects = QtWidgets.QComboBox() projects.insertItem(0, "<None>") # Add buttons to the main control layout main_control_layout.addWidget(create_button) main_control_layout.addStretch() main_control_layout.addWidget(database_label) main_control_layout.addWidget(projects_label) main_control_layout.addWidget(projects) main_control_layout.addWidget(refresh_button) # Splitter for tabwidget and preview / details widget split_widget = QtWidgets.QSplitter() # Widgets will be stored in a StackedWidget stacked_widget = QtWidgets.QStackedWidget() # Control widgets which make the tool manager_widget = ManageProjectWidget(parent=self) # Sub manager widgets overview = OverviewWidget() manager_widget.add_widget(overview) stacked_widget.insertWidget(manager_widget.order, manager_widget) # Navigation panel widget navigation_panel = Navigation() # Add buttons to navigation panel navigation_panel.add_button(manager_widget.label, manager_widget.order) # Add widgets to the SplitWidget split_widget.addWidget(navigation_panel) split_widget.addWidget(stacked_widget) split_widget.setHandleWidth(4) split_widget.setSizes([100, 700]) layout.addLayout(main_control_layout) layout.addWidget(split_widget) self.setLayout(layout) # To connect widget store in self attribute self._navigation_panel = navigation_panel self._stacked_widget = stacked_widget self._database_label = database_label self._create_button = create_button self._projects = projects self._refresh_button = refresh_button self._overview = overview self.connect_signals() self.refresh() manager_widget.setFocus(True)