class MenubarUI(object): def __init__(self, main_window: QMainWindow): """ 菜单栏 外观模式 :param main_window: """ self.main_window = main_window self.menubar = QMenuBar(main_window) self.menu_list = [] self.option_menu = OptionMenu(self.menubar, self.main_window) self.view_menu = ViewMenu(self.menubar) self.help_menu = HelpMenu(self.menubar, self.main_window) def setup_ui(self) -> None: font = QFont() font.setPointSize(10) self.menubar.setFont(font) # self.menubar.setGeometry(QRect(0, 0, 800, 25)) self.menubar.setFixedHeight(30) self.menubar.setObjectName("menubar") self.main_window.setMenuBar(self.menubar) self.load_ui() self.show_ui() if settings.LOAD_EFFECT_ON: load_animation.load_animation(self.menubar) # noinspection PyArgumentList def retranslate_ui(self) -> None: self.menubar.setWindowTitle(_translate("MenubarUI", "菜单栏")) def load_ui(self) -> None: """ 加载模块 :return: """ self.menu_list.append(self.option_menu) self.menu_list.append(self.view_menu) self.menu_list.append(self.help_menu) def show_ui(self) -> None: """ 显示数据 :return: """ for view in self.menu_list: view.setup_ui() view.retranslate_ui()
def init_components(self): """initializes all components and sets up the layout""" internalWidgetInput = QWidget() internalWidgetTree = QWidget() ############ define components #################### self.subredditInput = QComboBox() self.subredditInput.setEditable(True) self.subredditInput.addItems(self.get_downloaded_subreddits()) self.numInput = QLineEdit() self.onlyInt = QIntValidator() self.numInput.setValidator(self.onlyInt) subredditLabel = QLabel('subreddit') numLabel = QLabel('number of images') self.dirLabel = QLabel('choose a directory') scale_label = QLabel("Scale images?") self.imgView = QLabel() self.outputText = QTextEdit('') self.outputText.setReadOnly(True) self.scale_cb = QCheckBox() self.sortingCb = QComboBox() self.sortingCb.addItems([ "Hot", "Top all time", "Top this month", "Top past year", "New", "Controversial" ]) sortingLabel = QLabel('sorting method') self.runButton = QPushButton('Download') self.runButton.setIcon(self.download_icon) self.chooseDirButton = QPushButton('Save dir') self.stopButton = QPushButton('Stop') self.stopButton.setIcon(self.stop_icon) self.fileModel = QFileSystemModel() self.tree = QTreeView() self.tree.setModel(self.fileModel) self.tree.setColumnHidden(1, True) self.tree.setColumnHidden(2, True) self.tree.setColumnHidden(3, True) ############## Menu stuff ################### menu_bar = QMenuBar() file_menu = menu_bar.addMenu('File') help_menu = menu_bar.addMenu('Help') self.exit_action = QAction('Exit', self) file_menu.addAction(self.exit_action) self.help_action = QAction('Help', self) help_menu.addAction(self.help_action) menu_bar.setFixedHeight(30) ############# Setup the grid layout############################### grid = QGridLayout() # grid.addWidget(menu_bar, 1, 0, 1, 4) grid.setSpacing(4) grid.addWidget(subredditLabel, 1, 0) grid.addWidget(self.subredditInput, 1, 1) grid.addWidget(numLabel, 2, 0) grid.addWidget(self.numInput, 2, 1) grid.addWidget(sortingLabel, 3, 0) grid.addWidget(self.sortingCb, 3, 1) grid.addWidget(self.chooseDirButton, 4, 0) grid.addWidget(self.dirLabel, 4, 1) grid.addWidget(self.stopButton, 5, 0) grid.addWidget(self.runButton, 5, 1) grid.addWidget(self.outputText, 7, 0, 7, 2) # grid.addWidget(self.tree,1,2, 11,7) grid.addWidget(scale_label, 6, 0) grid.addWidget(self.scale_cb, 6, 1) hboxTree = QVBoxLayout() hboxTree.addWidget(self.tree) #the image viewer, setting how it behaves under resizing. self.imgView.setSizePolicy( QSizePolicy(QSizePolicy.MinimumExpanding, QSizePolicy.MinimumExpanding)) self.imgView.setMaximumHeight(MAX_IMAGE_HEIGHT) self.imgView.setAlignment(Qt.AlignmentFlag.AlignCenter) img_scroll_area = QScrollArea() img_scroll_area.setMinimumHeight(MAX_IMAGE_HEIGHT) img_scroll_area.setMinimumWidth(MAX_IMAGE_HEIGHT) img_scroll_area.setWidget(self.imgView) internalWidgetInput.setLayout(grid) # internalWidgetInput.setMinimumWidth(300) internalWidgetInput.setFixedWidth(300) internalWidgetInput.setSizePolicy( QSizePolicy(QSizePolicy.Fixed, QSizePolicy.MinimumExpanding)) internalWidgetTree.setLayout(hboxTree) internalWidgetTree.setFixedWidth(360) internalWidgetTree.setSizePolicy( QSizePolicy(QSizePolicy.Fixed, QSizePolicy.MinimumExpanding)) #construct layout of main window. hbox = QHBoxLayout() hbox.setSpacing(0) hbox.setContentsMargins(0, 0, 0, 0) hbox.setMenuBar(menu_bar) hbox.addWidget(internalWidgetInput) hbox.addWidget(internalWidgetTree) hbox.addWidget(img_scroll_area) self.setLayout(hbox)