def __setUpInputOutputLayout(self) -> QFormLayout: # Add input and output boxes self._inputComboBox = QComboBox(self.editor) self._inputComboBox.setModel(self.operation.workbench) self._outputNameBox = TextOptionWidget(parent=self.editor) self._outputNameBox.widget.textChanged.connect( self._validateOutputName) self._inputComboBox.currentTextChanged.connect(self._changeInputFrame) ioLayout = QFormLayout() ioLayout.addRow('Input data:', self._inputComboBox) ioLayout.addRow('Output name:', self._outputNameBox) completer = QCompleter(self._outputNameBox) completer.setModel(self.operation.workbench) completer.setFilterMode(Qt.MatchContains) completer.setModelSorting(QCompleter.CaseInsensitivelySortedModel) completer.setCompletionMode(QCompleter.UnfilteredPopupCompletion) self._outputNameBox.widget.setCompleter(completer) if self.selectedFrame: if self.selectedFrame == self._inputComboBox.currentText(): # Manually trigger the slot to change input self._changeInputFrame(self.selectedFrame) else: # Set the frame (will trigger _changeInputFrame) self._inputComboBox.setCurrentText(self.selectedFrame) else: # Default to whatever input name is set self._changeInputFrame(self._inputComboBox.currentText()) return ioLayout
def __init__(self, lookup_names: List[str], on_entered: CallbackType) -> None: widget = QLineEdit("") completer = QCompleter(lookup_names) completer.setCaseSensitivity(Qt.CaseInsensitive) completer.setFilterMode(Qt.MatchFlag.MatchContains) completer.setMaxVisibleItems(50) widget.setCompleter(completer) super().__init__("Название рецепта:", widget) self._on_recipe_name_entered = on_entered self._connect_slots()
def __init__(self, lookup_names: List, on_item_added: CallbackType) -> None: super().__init__() recipe_search_label = QLabel("Блюдо:") recipe_search_line_edit = QLineEdit("") completer = QCompleter(lookup_names) completer.setCaseSensitivity(Qt.CaseInsensitive) completer.setFilterMode(Qt.MatchFlag.MatchContains) completer.setMaxVisibleItems(50) recipe_search_line_edit.setCompleter(completer) serves_amount_label = QLabel("Порций:") serves_amount_line_edit = QLineEdit(str(self.DEFAULT_SERVES_AMOUNT)) serves_amount_line_edit.setFixedWidth(30) serves_amount_line_edit.setValidator(QIntValidator()) serves_amount_line_edit.setMaxLength(2) add_push_button = QPushButton("+") # Widget layout layout = QHBoxLayout() layout.addWidget(recipe_search_label) layout.addWidget(recipe_search_line_edit) layout.addWidget(serves_amount_label) layout.addWidget(serves_amount_line_edit) layout.addWidget(add_push_button) layout.addStretch() self.setLayout(layout) # Init self data self._on_item_added = on_item_added self._recipe_search_line_edit = recipe_search_line_edit self._serves_amount_line_edit = serves_amount_line_edit self._add_push_button = add_push_button # Connect slots self._connect_slots()