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__(self, app: QApplication): super().__init__() Settings.load() self.setWindowTitle(APP_NAME) self.app = app app.setApplicationName(APP_NAME) app.setApplicationDisplayName(APP_NAME) self.preview_image = QLabel('No items to preview') self.preview_image.setFixedHeight(USABLE_HEIGHT) self.props_empty = False self.save_image_button = QPushButton('Save image') self.save_image_button.setDisabled(True) self.tree_view = ItemView() self.items = self.create_model() self.item_data = [] self.tree_view.setRootIsDecorated(False) # self.tree_view.setAlternatingRowColors(True) self.tree_view.setModel(self.items) self.tree_view.clicked.connect(self.tree_view_clicked) self.tree_view.rowMoved.connect(self.tree_view_reorder) self.tree_view.setDragEnabled(True) self.tree_view.setDragDropMode(QTreeView.InternalMove) self.tree_view.setItemsExpandable(False) self.tree_view.setDragDropOverwriteMode(False) root = QVBoxLayout() items_layout = QHBoxLayout() group = QGroupBox('Source items:') layout = QVBoxLayout() layout.addWidget(self.tree_view) buttons = QHBoxLayout() add_menu = QMenu() add_menu.addAction(Text.get_add_add_action(self)) add_menu.addAction(Image.get_add_add_action(self)) add_menu.addAction(Barcode.get_add_add_action(self)) add_menu.addAction(QrCode.get_add_add_action(self)) add_menu.addSeparator() add_menu.addAction(Spacing.get_add_add_action(self)) add_button = QPushButton('Add') add_button.setMenu(add_menu) buttons.addWidget(add_button) #buttons.addWidget(add_text_button) #buttons.addWidget(add_barcode_button) buttons.addStretch() buttons.setSpacing(1) b_down = QPushButton('⬇︎') b_down.clicked.connect(lambda _: self.move_item(1)) b_up = QPushButton('⬆︎') b_up.clicked.connect(lambda _: self.move_item(-1)) b_delete = QPushButton('Delete') b_delete.clicked.connect(self.delete_item) b_clone = QPushButton('Copy') b_clone.clicked.connect(self.on_clone) buttons.addWidget(b_clone) buttons.addSpacing(10) buttons.addWidget(b_up) buttons.addWidget(b_down) buttons.addSpacing(10) buttons.addWidget(b_delete) layout.addLayout(buttons) group.setLayout(layout) items_layout.addWidget(group) self.property_group = QGroupBox('Item properties:') self.props_layout = QVBoxLayout() self.property_group.setLayout(self.props_layout) self.props_current = QLabel() self.props_layout.addWidget(self.props_current) self.save_printable_button = QPushButton('Save Changes') self.save_printable_button.clicked.connect(self.save_props) self.props_layout.addWidget(self.save_printable_button) self.update_props() items_layout.addWidget(self.property_group) root.addLayout(items_layout) group = QGroupBox('Preview:') layout = QVBoxLayout() preview_wrapper = QScrollArea(self) #prev_layout = QHBoxLayout() preview_wrapper.setWidget(self.preview_image) preview_wrapper.setHorizontalScrollBarPolicy(Qt.ScrollBarAsNeeded) preview_wrapper.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff) preview_wrapper.setWidgetResizable(True) preview_wrapper.setFixedHeight(USABLE_HEIGHT) layout.addWidget(preview_wrapper) # layout.addWidget(self.save_image_button) group.setLayout(layout) group.setSizePolicy( QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed)) root.addWidget(group) self.printer_select = QComboBox(self) fs_model = QFileSystemModel(self) #model_proxy = QSortFilterProxyModel(self) #model_proxy.setSourceModel(fs_model) # fs_model.setNameFilters(['tty.PT-P3*']) potential_printer = None printers = QStandardItemModel() #for p in QDir('/dev').entryList(['tty*'], QDir.System, QDir.Name): # if p.startswith('tty.'): for p in LabelMaker.list_serial_ports(): # pprint(p.__dict__) item = [QStandardItem(p.name), QStandardItem(p.device)] print(p.name) printers.appendRow(item) ''' item = QStandardItem('/dev/' + p) printers.appendRow(item) if p.startswith('tty.PT-P3'): potential_printer = item ''' #print(printers.entryList()) #model_proxy.setRecursiveFilteringEnabled(True) #model_proxy.setFilterKeyColumn(0) fs_model.setRootPath('/dev/') #/Users/nilsmasen') fs_model.setFilter(QDir.System) dev_index = fs_model.index('/dev') #proxy_dev = model_proxy.mapFromSource(dev_index) self.printer_select.setModel(printers) if potential_printer is not None: index = printers.indexFromItem(potential_printer) self.printer_select.setCurrentIndex(index.row()) #printer_select.setRootModelIndex(dev_index) #printer_select.setRootIndex(dev_index) #printer_select.setExpanded(dev_index, True) #model_proxy.setFilterWildcard('tty*') bottom_box = QGroupBox('Print label: ') bottom_bar = QHBoxLayout() bottom_bar.addWidget(QLabel('Print device:')) bottom_bar.addWidget(self.printer_select) bottom_bar.addStretch() # /dev/tty.PT-P300BT0607-Serial print_button = QPushButton('Print') print_button.setFixedWidth(100) bottom_bar.addWidget(print_button) print_button.clicked.connect(self.print_clicked) bottom_box.setLayout(bottom_bar) root.addWidget(bottom_box) root_widget = QWidget() root_widget.setFixedWidth(800) root_widget.setLayout(root) self.setCentralWidget(root_widget) menu = QMenuBar() self.setMenuBar(menu) menu.setWindowTitle(APP_NAME) tools_menu = menu.addMenu('Python') prefs = QAction('&Preferences', self) prefs.triggered.connect(self.on_prefs) tools_menu.addAction(prefs) about = QAction('About ' + APP_NAME, self) about.triggered.connect(self.on_prefs) about.setMenuRole(QAction.AboutRole) tools_menu.addAction(about) file_menu = menu.addMenu('Label') act_new = QAction('&New', self) act_new.triggered.connect(self.on_new) file_menu.addAction(act_new) file_menu.addSeparator() act_open = QAction('&Open', self) act_open.triggered.connect(self.on_open) act_open.setShortcut(QKeySequence('Ctrl+O')) file_menu.addAction(act_open) file_menu.addSeparator() act_save = QAction('&Save', self) act_save.triggered.connect(self.on_save) act_save.setShortcut(QKeySequence("Ctrl+S")) file_menu.addAction(act_save) act_save_as = QAction('Save &as...', self) act_save_as.triggered.connect(self.on_save_as) act_save_as.setShortcut(QKeySequence("Ctrl+Shift+S")) file_menu.addAction(act_save_as) file_menu.addSeparator() file_menu.addAction(QAction('&Export image', self))