def show_context_menu(self): """ Creates and shows the context menu for the search widget :return: QAction """ menu = QMenu(self) standard_menu = self.createStandardContextMenu() standard_menu.setTitle('Edit') menu.addMenu(standard_menu) sub_menu = QMenu(menu) sub_menu.setTitle('Space Operator') menu.addMenu(sub_menu) or_action = QAction('OR', menu) or_action.setCheckable(True) or_callback = partial(self.set_space_operator, 'or') or_action.triggered.connect(or_callback) if self.space_operator() == 'or': or_action.setChecked(True) sub_menu.addAction(or_action) and_action = QAction('AND', menu) and_action.setCheckable(True) and_callback = partial(self.set_space_operator, 'and') and_action.triggered.connect(and_callback) if self.space_operator() == 'and': and_action.setChecked(True) sub_menu.addAction(and_action) action = menu.exec_(QCursor.pos()) return action
def getOrCreateMenu(menuBar, title): for child in menuBar.findChildren(QMenu): if child.title() == title: return child menu = QMenu(menuBar) menu.setObjectName(title) menu.setTitle(title) return menu
def get_or_create_menu(menu_bar, menu_title): """ Creates a new menu in the given menubar with the given menubar or return Menu object if the a menu with the given name already exists in the menu bar :param menu_bar: QMenuBar or QMenu :param menu_title: str :return: QMenu """ for child in menu_bar.findChildren(QMenu): if child.title() == menu_title: return child menu = QMenu(menu_bar) menu.setObjectName(menu_title) menu.setTitle(menu_title) return menu