def createMenuBar(self): self.menuBar = Qt.QMenuBar() # File Menu self.fileMenu = self.menuBar.addMenu("File") self.fileMenu.setStatusTip("Open File Menu") self.fileMenu.addAction(self.openFileAct) self.fileMenu.addAction(self.setOutputFilePathAct) self.fileMenu.addSeparator() self.fileMenu.addAction(self.exitAct) # Settings Menu self.settingsMenu = self.menuBar.addMenu("Settings") self.settingsMenu.setStatusTip("Open Settings Menu") self.settingsMenu.addAction(self.addPathAct) self.settingsMenu.addAction(self.deletePathAct) self.settingsMenu.addSeparator() self.deepScanMenu = Qt.QMenu("Toogle Deep Scan") self.deepScanMenu.setStatusTip("Toggle Deep Scan On/Off") self.settingsMenu.addMenu(self.deepScanMenu) self.deepScanMenu.addAction(self.deepScanOnAct) self.deepScanMenu.addAction(self.deepScanOffAct) self.setMenuBar(self.menuBar)
def editorEvent(self, event, model, option, midx): if not midx.isValid() or option.widget is None: return False flags = midx.flags() item_is_enabled = flags | Qt.Qt.ItemIsEnabled item_is_editable = flags | Qt.Qt.ItemIsEditable if not item_is_enabled or not item_is_editable: return False menu = Qt.QMenu(option.widget) menu.setAttribute(Qt.Qt.WA_DeleteOnClose) choices = midx.data(CHOICES_QITEMDATA_ROLE) choice_actions = [menu.addAction(choice) for choice in choices] try: current_choice = midx.data() if isinstance(current_choice, Qt.QVariant): current_choice = current_choice.value() current_choice_action = choice_actions[choices.index( current_choice)] menu.setActiveAction(current_choice_action) except ValueError: current_choice_action = None cell_rect = option.widget.visualRect(midx) menu_pos = option.widget.mapToGlobal( Qt.QPoint(cell_rect.left(), (cell_rect.top() + cell_rect.bottom()) / 2)) pmidx = Qt.QPersistentModelIndex(midx) def on_entry_selected(action): if pmidx.isValid(): model.setData(model.index(pmidx.row(), pmidx.column()), action.text().replace('&', '')) menu.triggered.connect(on_entry_selected) menu.popup(menu_pos, current_choice_action) return False
def contextMenuEvent(self, event): self.menu = Qt.QMenu(self) rows = self.currentRows() if len(rows) == 1: name = self.item(rows[0], 0).text() else: name = self.tr("multiple addons") self.menu.addAction(self.tr("Context menu for {}").format(name)) actionUpdate = Qt.QAction(self.tr("Update addon"), self) actionUpdate.setStatusTip( self.tr("Update currently selected addons if needed")) actionUpdate.triggered.connect(self.parent.updateAddons) self.menu.addAction(actionUpdate) actionForceUpdate = Qt.QAction(self.tr("Force Update addon"), self) actionForceUpdate.setStatusTip( self.tr("Unconditionally update currently selected addons")) actionForceUpdate.triggered.connect(self.parent.forceUpdateAddon) self.menu.addAction(actionForceUpdate) actionRemovefromlist = Qt.QAction(self.tr("Remove addon from list"), self) actionRemovefromlist.setStatusTip( self.tr("Leave all files unaltered, useful for subaddons")) actionRemovefromlist.triggered.connect(self.parent.removeFromList) self.menu.addAction(actionRemovefromlist) self.menu.popup(Qt.QCursor.pos())
def contextMenuEvent(self, event): self.menu = Qt.QMenu(self) row = self.currentRow() name = self.item(row, 0).text() self.menu.addAction(self.tr("{}").format(name)) removefromlistAction = Qt.QAction(self.tr("Remove from list"), self) removefromlistAction.setStatusTip( self.tr("Leave all files unaltered, useful for subaddons")) removefromlistAction.triggered.connect(self.removeFromList) self.menu.addAction(removefromlistAction) actionUpdate = Qt.QAction(self.tr("Update addon"), self) actionUpdate.setStatusTip( self.tr("Update currently selected addon if needed")) actionUpdate.triggered.connect(self.parent.updateAddon) self.menu.addAction(actionUpdate) actionForceUpdate = Qt.QAction(self.tr("Force Update addon"), self) actionForceUpdate.setStatusTip( self.tr("Unconditionally update currently selected addon")) actionForceUpdate.triggered.connect(self.parent.forceUpdateAddon) self.menu.addAction(actionForceUpdate) self.menu.addSeparator() actionRemove = Qt.QAction(self.tr("Delete addon"), self) actionRemove.setStatusTip(self.tr("Completely remove selected addon")) actionRemove.triggered.connect(self.parent.removeAddon) self.menu.addAction(actionRemove) self.menu.popup(Qt.QCursor.pos())
def contextMenuEvent(self, event): self.menu = Qt.QMenu(self) row = self.currentRow() name = self.item(row, 0).text() self.menu.addAction(self.tr("Menu contextuel de {}").format(name)) actionUpdate = Qt.QAction(self.tr("Mise à jour Addon"), self) actionUpdate.setStatusTip( self.tr("Mise à jour des Addons sélectionnés si nécessaire")) actionUpdate.triggered.connect(self.parent.updateAddon) self.menu.addAction(actionUpdate) actionForceUpdate = Qt.QAction(self.tr("Forcer la mise à jour Addon"), self) actionForceUpdate.setStatusTip( self.tr("Mise à jour forcée des Addons sélectionnés")) actionForceUpdate.triggered.connect(self.parent.forceUpdateAddon) self.menu.addAction(actionForceUpdate) actionRemovefromlist = Qt.QAction( self.tr("Supprimer addon de la liste"), self) actionRemovefromlist.setStatusTip( self. tr("Laisser tous les fichiers inchangés, utile pour les sous-addons" )) actionRemovefromlist.triggered.connect(self.parent.removeFromList) self.menu.addAction(actionRemovefromlist) self.menu.popup(Qt.QCursor.pos())
def eventFilter(self, obj, event): """ Filter events if this object has been installed as an event filter for the watched object. Shows dedicated context menu for categories panel. Arguments: obj (QObject): Watched object. event (QEvent): Event being processed. Returns: bool: *True* if event should be filtered out (i.e. if further processing should be stopped); *False* otherwise. """ if obj == self.panel and event.type() == Q.QEvent.ContextMenu: menu = Q.QMenu() menu.addAction(translate("ShowAllPanel", "Expand all"), self.expandAll) menu.addAction(translate("ShowAllPanel", "Collapse all"), self.collapseAll) event.accept() menu.exec_(self.mapToGlobal(event.pos())) # pragma pylint: disable=no-member return False
def __contextMenu(self, point): modelindex = self.ui.treeView.indexAt(point) item = self._tree_model.item(modelindex) if not item: return actions = [ """self.menu.addAction("Sign driver configuration", self.actionSaveConfigMth)""", """self.menu.addAction("Solve driver configuration conflict", self.contextSolveConflict)""", """self.menu.addAction("Delete driver not present", self.contextDeleteDriverError)""", """self.menu.addAction("New driver. Keep or set to default", self.contextSolveNewDriver)""", """self.menu.addSeparator()""", """self.menu.addAction("Start Icepap system configuration", self.contextIcepapStart)""", """self.menu.addAction("Rescan Icepap system", self.contextIcepapStart)""", """self.menu.addAction("Finish Icepap system configuration", self.contextIcepapStop)""", """self.menu.addSeparator()""", """self.menu.addAction("Edit Icepap system information", self.contextEditIcepap)""", """self.menu.addAction("Delete Icepap system configuration", self.btnTreeRemove_on_click)""", """self.menu.addSeparator()""", """self.menu.addAction("Open Icepap console", self.contextOpenConsole)""", ] self.menu = Qt.QMenu(self) font = QtGui.QFont() font.setPointSize(8) self.menu.setFont(font) self.context_menu_item = item shown_actions = [] if item.role == IcepapTreeModel.SYSTEM_OFFLINE: shown_actions = [5, 8, 9, 10, 11, 12] if item.role == IcepapTreeModel.DRIVER: shown_actions = [6, 7, 8, 9, 10, 11, 12] elif item.role == IcepapTreeModel.DRIVER_CFG: shown_actions = [0, 4, 6, 7, 8, 9, 10, 11, 12] elif item.role == IcepapTreeModel.DRIVER_ERROR: shown_actions = [2, 4, 6, 7, 8, 9, 10, 11, 12] elif item.role == IcepapTreeModel.DRIVER_WARNING: shown_actions = [1, 4, 6, 7, 8, 9, 10, 11, 12] elif item.role == IcepapTreeModel.DRIVER_NEW: shown_actions = [3, 4, 6, 7, 8, 9, 10, 11, 12] elif item.role == IcepapTreeModel.SYSTEM or \ item.role == IcepapTreeModel.CRATE or \ item.role == IcepapTreeModel.SYSTEM_ERROR or \ item.role == IcepapTreeModel.SYSTEM_WARNING: shown_actions = [6, 7, 8, 9, 10, 11, 12] for i in shown_actions: exec(actions[i]) self.menu.popup(self.cursor().pos())
def contextMenuEvent(self, event): focused_midx = self.selectionModel().currentIndex() if not focused_midx.isValid(): return row = self.rowAt(event.pos().y()) col = self.columnAt(event.pos().x()) if row != focused_midx.row() or col != focused_midx.column(): return try: pname = self.layer_table_model.property_names[col] except IndexError: return try: psdg = self.layer_table_model._special_data_getters[pname] except KeyError: return if psdg != self.layer_table_model._getd_defaultable_property: return try: layer = self.layer_table_model.layer_stack.layers[-(row + 1)] except IndexError: return try: p = getattr(type(layer), pname) except AttributeError: return if p.is_default(layer): return menu = Qt.QMenu(self) reset_to_default_action = Qt.QAction('Reset to default value', menu) def on_reset_action(): p.__delete__(layer) reset_to_default_action.triggered.connect(on_reset_action) menu.addAction(reset_to_default_action) menu.exec(event.globalPos())
def __init__(self, app, group_name, list_of_exams): super().__init__() update_button = Qt.QPushButton(Qt.QIcon(common.UPDATE), '', self) update_button.setObjectName('Flat') update_button.setCursor(Qt.Qt.PointingHandCursor) update_button.setIconSize(Qt.QSize(35, 35)) update_button.setFixedSize(Qt.QSize(55, 55)) update_button.clicked.connect(lambda _: app.display_home_page()) exams_title = Qt.QLabel('Экзамены группы ' + group_name, self) exams_title.setFont(Qt.QFont('Arial', 30)) view_profile_action = Qt.QWidgetAction(self) view_profile_action.setFont(Qt.QFont('Arial', 15)) view_profile_action.setText('Профиль') view_profile_action.triggered.connect( lambda _: app.display_profile_page()) exit_action = Qt.QWidgetAction(self) exit_action.setFont(Qt.QFont('Arial', 15)) exit_action.setText('Выйти') exit_action.triggered.connect(lambda _: app.logout()) user_menu = Qt.QMenu(self) user_menu.addAction(view_profile_action) user_menu.addAction(exit_action) user_button = Qt.QPushButton(Qt.QIcon(common.USER), '', self) user_button.setObjectName('Flat') user_button.setCursor(Qt.Qt.PointingHandCursor) user_button.setIconSize(Qt.QSize(35, 35)) user_button.setFixedSize(Qt.QSize(55, 55)) user_button.setMenu(user_menu) scroll_area = Qt.QScrollArea() scroll_area.setFrameShape(Qt.QFrame.NoFrame) scroll_layout = Qt.QVBoxLayout() scroll_layout.setSizeConstraint(Qt.QLayout.SetMinimumSize) for exam in list_of_exams: exam_id = exam['rowid'] exam_name = exam['name'] exam_button = Qt.QPushButton(Qt.QIcon(common.EXAM30), exam_name, self) exam_button.setObjectName('Flat') exam_button.setCursor(Qt.Qt.PointingHandCursor) exam_button.setIconSize(Qt.QSize(30, 30)) exam_button.setFont(Qt.QFont('Arial', 20)) exam_button.clicked.connect( common.return_lambda(app.display_exam, exam_id)) exam_layout = Qt.QHBoxLayout() exam_layout.addWidget(exam_button) exam_layout.addStretch(1) scroll_layout.addLayout(exam_layout) scroll_layout.addStretch(1) scroll_widget = Qt.QWidget(self) scroll_widget.setLayout(scroll_layout) scroll_area.setWidget(scroll_widget) upper_layout = Qt.QHBoxLayout() upper_layout.addWidget(update_button) upper_layout.addStretch(1) upper_layout.addWidget(exams_title) upper_layout.addStretch(1) upper_layout.addWidget(user_button) layout = Qt.QVBoxLayout() layout.addLayout(upper_layout) layout.addSpacerItem(Qt.QSpacerItem(0, 20)) layout.addWidget(scroll_area) self.setLayout(layout)
def __init__(self, plugin, gui, icon): Qt.QDialog.__init__(self, gui) self.plugin = plugin self.gui = gui self.full_db = gui.current_db self.db = gui.current_db.new_api self.elastic_search_client = None self.conversion_time_dict = {} self.setWindowTitle(TITLE) self.setWindowIcon(icon) self.setWindowFlags(QtCore.Window | QtCore.WindowTitleHint | QtCore.CustomizeWindowHint) max_fit_size_policy = QtWidgets.QSizePolicy( QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed) self.layout = Qt.QVBoxLayout() self.setLayout(self.layout) self.search_label = Qt.QLabel('Enter &text to search in content') self.layout.addWidget(self.search_label) self.search_text_layout = Qt.QHBoxLayout() self.search_textbox = Qt.QComboBox(self) self.search_textbox.setMinimumWidth(400) self.search_textbox.setEditable(True) self.search_textbox.setInsertPolicy(Qt.QComboBox.NoInsert) for _, value in sorted(prefs.get('search_lru', {}).items()): self.search_textbox.addItem(value) self.search_textbox.setEditText('') self.search_textbox.editTextChanged.connect( self.on_search_text_changed) self.search_label.setBuddy(self.search_textbox) self.search_text_layout.addWidget(self.search_textbox) self.search_help_button = Qt.QToolButton(self) self.search_help_button.setText('?') fixed_size_policy = self.search_help_button.sizePolicy() fixed_size_policy.setHorizontalPolicy(QtWidgets.QSizePolicy.Fixed) self.search_help_button.setSizePolicy(fixed_size_policy) self.search_help_button.clicked.connect(self.on_search_help) self.search_text_layout.addWidget(self.search_help_button) self.layout.addLayout(self.search_text_layout) self.search_button = Qt.QToolButton(self) self.search_button.setEnabled(False) self.search_button.setToolButtonStyle(QtCore.ToolButtonTextBesideIcon) self.search_button.setText('&Search') self.search_button.setPopupMode(Qt.QToolButton.MenuButtonPopup) self.search_button.clicked.connect(self.on_search_all) self.search_dropdown = Qt.QMenu() self.search_dropdown.addAction('Search in the &whole library', self.on_search_all) self.search_dropdown.addAction('Search in &selected books', self.on_search_selected) self.search_button.setMenu(self.search_dropdown) self.search_button.setSizePolicy(max_fit_size_policy) self.layout.addWidget(self.search_button) self.cancel_button = Qt.QToolButton(self) self.cancel_button.setText('&Cancel') self.cancel_button.clicked.connect(self.on_cancel) self.cancel_button.setVisible(False) self.cancel_button.setSizePolicy(max_fit_size_policy) self.layout.addWidget(self.cancel_button) self.status_label = Qt.QLabel() self.status_label.setAlignment(QtCore.AlignCenter) self.layout.addWidget(self.status_label) self.progress_bar = Qt.QProgressBar(self) self.progress_bar.setVisible(False) retain_size_policy = self.progress_bar.sizePolicy() retain_size_policy.setRetainSizeWhenHidden(True) self.progress_bar.setSizePolicy(retain_size_policy) self.layout.addWidget(self.progress_bar) self.details_button = Qt.QPushButton(self) self.details_button.setText('&Details') self.details_button.setVisible(False) retain_size_policy = self.details_button.sizePolicy() retain_size_policy.setRetainSizeWhenHidden(True) self.details_button.setSizePolicy(retain_size_policy) self.details_button.setFlat(True) self.details_button.setStyleSheet('text-align: left') icon = get_icons('images/right-arrow.png') self.details_button.setIcon(icon) self.details_button.clicked.connect(self.on_details) self.layout.addWidget(self.details_button) self.details = Qt.QListWidget(self) self.details.setVisible(False) self.layout.addWidget(self.details) self.layout.addStretch() self.reindex_button = Qt.QToolButton(self) self.reindex_button.setToolButtonStyle(QtCore.ToolButtonTextBesideIcon) self.reindex_button.setText('Reindex &new books') self.reindex_button.setPopupMode(Qt.QToolButton.MenuButtonPopup) self.reindex_button.clicked.connect(self.on_reindex) self.reindex_dropdown = Qt.QMenu() self.reindex_dropdown.addAction('Reindex &new books', self.on_reindex) self.reindex_dropdown.addAction('Reindex &all books', self.on_reindex_all) self.reindex_button.setMenu(self.reindex_dropdown) self.reindex_button.setSizePolicy(max_fit_size_policy) self.layout.addWidget(self.reindex_button) self.conf_button = Qt.QToolButton(self) self.conf_button.setText('&Options...') self.conf_button.clicked.connect(self.on_config) self.conf_button.setSizePolicy(max_fit_size_policy) self.layout.addWidget(self.conf_button) self.readme_button = Qt.QToolButton(self) self.readme_button.setText('&Readme...') self.readme_button.clicked.connect(self.on_readme) self.readme_button.setSizePolicy(max_fit_size_policy) self.layout.addWidget(self.readme_button) self.close_button = Qt.QToolButton(self) self.close_button.setText('&Close') self.close_button.clicked.connect(self.close) self.close_button.setSizePolicy(max_fit_size_policy) self.layout.addWidget(self.close_button) self.thread_pool = Qt.QThreadPool() self.add_workers_submitted = 0 self.add_workers_complete = 0 self.delete_workers_submitted = 0 self.delete_workers_complete = 0 self.first_paint = True self.pdftotext_full_path = None self.ids = None if 'version' not in prefs: file_formats = set(prefs['file_formats'].split(',') + ARCHIVE_FORMATS) prefs['file_formats'] = ','.join(file_formats) prefs['version'] = CapsPlugin.version self.key_pressed.connect(self.on_key_pressed)
def initUI(self): _translate = QtCore.QCoreApplication.translate #self.setWindowTitle("毕业设计") self.resize(1200, 600) rect = self.frameGeometry() rect.moveCenter(QApplication.desktop().availableGeometry().center()) self.move(rect.topLeft()) self.stuInfoList = QTableWidget(self) self.stuInfoList.setEditTriggers(self.stuInfoList.NoEditTriggers) self.stuInfoList.verticalHeader().setHidden(True) self.stuInfoList.setColumnCount(10) self.stuInfoList.setHorizontalHeaderLabels( ["学号", "姓名", "性别", "年级", "专业", "政治", "英语", "数学", "专业课", "总分"]) #选中条目的动作为选中那一行 self.stuInfoList.setSelectionBehavior(Qt.QAbstractItemView.SelectRows) #单行选中 self.stuInfoList.setSelectionMode(Qt.QAbstractItemView.SingleSelection) #将每个条目扩展到充满容器 self.stuInfoList.horizontalHeader().setStretchLastSection(True) #将容器宽度平均分给所有条目 self.stuInfoList.horizontalHeader().setSectionResizeMode( Qt.QHeaderView.Stretch) header = self.stuInfoList.horizontalHeader() #header.setSortIndicator(5, QtCore.Qt.AscendingOrder) header.setSortIndicatorShown(True) header.setSectionsClickable(True) #connect(headerGoods, SIGNAL(sectionClicked(int)), _nodeTableWidget, SLOT (sortByColumn(int))) self.createButton = Qt.QPushButton(self) self.createButton.setText("新建") self.createButton.setDefault(True) self.deleteButton = Qt.QPushButton(self) self.deleteButton.setText("删除") self.modifyButton = Qt.QPushButton(self) self.modifyButton.setText("修改") self.queryButton = Qt.QPushButton(self) self.queryButton.setText("查询") self.flushButton = Qt.QPushButton(self) self.flushButton.setText("后退") self.menuBar = Qt.QMenuBar(self) menu = Qt.QMenu(self.menuBar) menu.setTitle("菜单") menu_A = Qt.QMenu(self.menuBar) menu_A.setTitle("关于") self.menuBar.addMenu(menu) self.menuBar.addMenu(menu_A) self.openAbout = Qt.QAction(menu_A) self.openAbout.setText("作品相关") menu_A.addAction(self.openAbout) self.openDataBaseAction = Qt.QAction(menu) self.openDataBaseAction.setText("打开数据库") menu.addAction(self.openDataBaseAction) self.createNewAction = Qt.QAction(menu) self.createNewAction.setText("新建档案") #self.enterAction.triggered.connect(self.enterActionTriggered) menu.addAction(self.createNewAction) self.createNewAccount = Qt.QAction(menu) self.createNewAccount.setText("新建学生账户") menu.addAction(self.createNewAccount) self.findDisqualified = Qt.QAction(menu) self.findDisqualified.setText("查询不及格") menu.addAction(self.findDisqualified) self.fileCloseAction = Qt.QAction(menu) self.fileCloseAction.setText("关闭") menu.addAction(self.fileCloseAction) ''' self.menubar = QtWidgets.QMenuBar(self) self.menubar.setGeometry(QtCore.QRect(0, 0, 608, 23)) self.menubar.setObjectName("menubar") self.menu = QtWidgets.QMenu(self.menubar) self.menu.setObjectName("menu") self.menu.setTitle(_translate("MainWindow", "文件(&F)")) self.menu_E = QtWidgets.QMenu(self.menubar) self.menu_E.setObjectName("menu_E") self.menu_E.setTitle(_translate("MainWindow", "编辑(&E)")) ''' layout = Qt.QGridLayout(self) layout.addWidget(self.stuInfoList, 3, 0, 5, -1) layout.addWidget(self.queryButton, 8, 9, 1, 1) layout.addWidget(self.createButton, 8, 6, 1, 1) layout.addWidget(self.modifyButton, 8, 8, 1, 1) layout.addWidget(self.deleteButton, 8, 7, 1, 1) layout.addWidget(self.flushButton, 8, 10, 1, 1) layout.setMenuBar(self.menuBar)
def __init__(self, app, exam_id): super().__init__() self.app = app self.exam_id = exam_id self.question_id = None self.question_number = None self.exam_data = None self.question_data = None self.questions_ids = [] back_button = Qt.QPushButton(Qt.QIcon(common.LEFT), '', self) back_button.setObjectName('Flat') back_button.setCursor(Qt.Qt.PointingHandCursor) back_button.setIconSize(Qt.QSize(35, 35)) back_button.setFixedSize(Qt.QSize(55, 55)) back_button.clicked.connect(lambda _: app.display_home_page()) scroll_area = Qt.QScrollArea() scroll_area.setWidgetResizable(True) scroll_area.setFrameShape(Qt.QFrame.NoFrame) scroll_area.setSizePolicy(Qt.QSizePolicy.Minimum, Qt.QSizePolicy.Minimum) self.settings_button = Qt.QPushButton(Qt.QIcon(common.SETTINGS), '', self) self.settings_button.setObjectName('Flat') self.settings_button.setCursor(Qt.Qt.PointingHandCursor) self.settings_button.setIconSize(Qt.QSize(30, 30)) self.settings_button.setFixedSize(Qt.QSize(50, 50)) self.settings_button.clicked.connect( lambda _: self.app.view_exam_settings()) self.questions_layout = Qt.QHBoxLayout() self.questions_layout.setSpacing(0) short_question_action = Qt.QWidgetAction(self) short_question_action.setFont(Qt.QFont('Arial', 15)) short_question_action.setText('Вопрос с кратким ответом') short_question_action.triggered.connect( lambda: self.app.create_question(self.exam_id, 'Short')) long_question_action = Qt.QWidgetAction(self) long_question_action.setFont(Qt.QFont('Arial', 15)) long_question_action.setText('Вопрос с развёрнутым ответом') long_question_action.triggered.connect( lambda: self.app.create_question(self.exam_id, 'Long')) create_menu = Qt.QMenu(self) create_menu.addAction(short_question_action) create_menu.addAction(long_question_action) create_button = Qt.QPushButton(Qt.QIcon(common.CREATE), '', self) create_button.setObjectName('Flat') create_button.setCursor(Qt.Qt.PointingHandCursor) create_button.setIconSize(Qt.QSize(40, 40)) create_button.setFixedSize(Qt.QSize(50, 50)) create_button.setMenu(create_menu) self.widget = Qt.QWidget(self) scroll_layout = Qt.QHBoxLayout() scroll_layout.setSpacing(0) scroll_layout.setContentsMargins(0, 0, 0, 0) scroll_layout.setSizeConstraint(Qt.QLayout.SetMinimumSize) scroll_layout.addWidget(self.settings_button) scroll_layout.addLayout(self.questions_layout) scroll_layout.addSpacerItem(Qt.QSpacerItem(5, 0)) scroll_layout.addWidget(create_button) scroll_layout.addStretch(1) scroll_widget = Qt.QWidget(self) scroll_widget.setLayout(scroll_layout) scroll_area.setWidget(scroll_widget) upper_layout = Qt.QHBoxLayout() upper_layout.addWidget(back_button) upper_layout.addSpacerItem(Qt.QSpacerItem(10, 0)) upper_layout.addWidget(scroll_area) layout = Qt.QVBoxLayout() layout.addLayout(upper_layout) layout.addSpacerItem(Qt.QSpacerItem(0, 10)) layout.addWidget(self.widget) self.setLayout(layout)
def contextMenuEvent(self, event): menu = Qt.QMenu(self) menu.addAction(self.consolidate_selected_action) menu.addAction(self.delete_selected_action) menu.exec(event.globalPos())
def __init__(self, astergui, parent=None, **kwargs): """ Create variable edition panel. Arguments: astergui (AsterGui): Parent *AsterGui* instance. parent (Optional[QWidget]): Parent widget. Defaults to *None*. kwargs: Keyword arguments. """ super(VariablePanel, self).__init__(parent=parent, name=translate("VariablePanel", "Create variable"), astergui=astergui, **kwargs) self._stage = None self._variable = None grid = Q.QGridLayout(self) grid.setContentsMargins(0, 0, 0, 0) grid.addWidget(Q.QLabel(translate("VariablePanel", "Name"), self), 0, 0) self._vname = Q.QLineEdit(self) self._vname.setObjectName("Name") validator = Q.QRegExpValidator(Q.QRegExp(VariablePanel.namePattern()), self._vname) self._vname.setValidator(validator) grid.addWidget(self._vname, 0, 1, 1, 2) grid.addWidget( Q.QLabel(translate("VariablePanel", "Expression"), self), 1, 0) self._vexpr = Q.QLineEdit(self) self._vexpr.setObjectName("Expression") grid.addWidget(self._vexpr, 1, 1) self._vcomp = VariablePanel.Completer(self._vexpr) self._vins = Q.QToolButton(self) self._vins.setArrowType(Q.Qt.DownArrow) self._vins.setPopupMode(Q.QToolButton.InstantPopup) self._vins.setMenu(Q.QMenu(self._vins)) grid.addWidget(self._vins, 1, 2) label = Q.QLabel(translate("VariablePanel", "Value"), self) grid.addWidget(label, 2, 0) self._veval = Q.QLineEdit(self) self._veval.setReadOnly(True) self._veval.setFrame(False) self._veval.setObjectName("Value") fnt = self._veval.font() fnt.setBold(True) fnt.setItalic(True) self._veval.setFont(fnt) pal = self._veval.palette() pal.setColor(self._veval.backgroundRole(), label.palette().color(label.backgroundRole())) self._veval.setPalette(pal) grid.addWidget(self._veval, 2, 1, 1, 2) grid.addWidget(Q.QLabel(translate("VariablePanel", "Comment"), self), 3, 0) self._vcomment = Q.QPlainTextEdit(self) self._vcomment.setObjectName("Comment") grid.addWidget(self._vcomment, 3, 1, 1, 2) grid.setRowStretch(4, 1) self.setFocusProxy(self._vname) connect(self._vname.textChanged, self._onNameChanged) connect(self._vexpr.textChanged, self._onExpressionChanged) connect(self._vcomment.textChanged, self.updateButtonStatus) connect(self._vins.menu().triggered, self._onMenuTriggered) self._reconnect() self._updateState() self._onExpressionChanged()
def tree_widget_custom_menu(self, pos): menu = Qt.QMenu(self) turn_off_action = Qt.QAction(Qt.QIcon(":/eye.png"), 'Turn All Off', self) turn_off_action.triggered.connect(self.turn_all_off) create_action = Qt.QAction(Qt.QIcon(':/add.png'), 'Create Layer', self) create_action.triggered.connect(self.create_layer) selected_layers = self.tree_widget.get_selected_layers() if selected_layers: clear_selection_action = Qt.QAction(Qt.QIcon(":/clear.png"), 'Clear Selection', self) clear_selection_action.triggered.connect( self.tree_widget.clearSelection) layer_under_mouse = self.tree_widget.get_layer_under_mouse() suff = 's' if len(selected_layers) > 1 else '' if selected_layers: remove_action = Qt.QAction(Qt.QIcon(':/remove.png'), f'Delete selected layer{suff}', self) remove_action.triggered.connect( lambda: self.remove_layer(selected_layers)) duplicate_action = Qt.QAction(Qt.QIcon(':/duplicate.png'), f'Duplicate selected layer{suff}', self) duplicate_action.triggered.connect( lambda: self.duplicate_layer(selected_layers)) if len(selected_layers) > 1: merge_action = Qt.QAction(Qt.QIcon(":/merge.png"), "Merge selected layers", self) merge_action.triggered.connect( lambda: self.merge_layers(selected_layers)) rename_icon = Qt.QIcon(':/rename.png') if layer_under_mouse: rename_action = Qt.QAction(rename_icon, 'Rename layer', self) rename_action.triggered.connect( lambda: self.rename_layer(layer_under_mouse)) if len(selected_layers) > 1: bulk_rename = Qt.QAction(rename_icon, f'Rename selected layers', self) bulk_rename.triggered.connect( lambda: self.bulk_rename(selected_layers)) menu.addAction(turn_off_action) if selected_layers: menu.addSeparator() menu.addAction(clear_selection_action) menu.addSeparator() menu.addAction(create_action) if selected_layers: menu.addAction(remove_action) menu.addAction(duplicate_action) if len(selected_layers) > 1: menu.addAction(merge_action) menu.addSeparator() if layer_under_mouse: menu.addAction(rename_action) if len(selected_layers) > 1: menu.addAction(bulk_rename) menu.popup(self.tree_widget.mapToGlobal(pos))