def widthline(validator): s = QLineEdit(self) s.setFixedWidth(60) s.setAlignment(Qt.AlignRight) s.setValidator(validator) s.setContentsMargins(0, 0, 0, 0) return s, s.textChanged
def _add_row(self, parameter: Optional[Parameter] = None): row_id = len(self.__controls) if parameter is None: parameter = Parameter(f"p{row_id + 1}") edit = QLineEdit(text=parameter.name) edit.setFixedWidth(60) edit.textChanged.connect(self.__on_text_changed) button = gui.button(None, self, "×", callback=self.__on_remove_button_clicked, autoDefault=False, width=34, sizePolicy=(QSizePolicy.Maximum, QSizePolicy.Maximum)) kwargs = {"minimum": -2147483647, "maximum": 2147483647} init_spin = QDoubleSpinBox(decimals=4, **kwargs) lower_spin = QDoubleSpinBox(**kwargs) upper_spin = QDoubleSpinBox(**kwargs) init_spin.setValue(parameter.initial) lower_spin.setValue(parameter.lower) upper_spin.setValue(parameter.upper) lower_check = QCheckBox(checked=bool(parameter.use_lower)) upper_check = QCheckBox(checked=bool(parameter.use_upper)) lower_spin.setEnabled(lower_check.isChecked()) upper_spin.setEnabled(upper_check.isChecked()) init_spin.valueChanged.connect(self.__on_init_spin_changed) lower_spin.valueChanged.connect(self.__on_lower_spin_changed) upper_spin.valueChanged.connect(self.__on_upper_spin_changed) lower_check.stateChanged.connect(self.__on_lower_check_changed) upper_check.stateChanged.connect(self.__on_upper_check_changed) controls = (button, edit, init_spin, lower_check, lower_spin, upper_check, upper_spin) n_rows = self.__layout.rowCount() for i, control in enumerate(controls): self.__layout.addWidget(control, n_rows, i) self.__data.append(parameter) self.__controls.append(controls) self._set_labels_visible(True)