def __init__(self, procdesc, state): LayoutWidget.__init__(self) scale = procdesc["scale"] def apply_properties(widget): widget.setDecimals(procdesc["ndecimals"]) if procdesc["global_min"] is not None: widget.setMinimum(procdesc["global_min"]/scale) else: widget.setMinimum(float("-inf")) if procdesc["global_max"] is not None: widget.setMaximum(procdesc["global_max"]/scale) else: widget.setMaximum(float("inf")) if procdesc["global_step"] is not None: widget.setSingleStep(procdesc["global_step"]/scale) if procdesc["unit"]: widget.setSuffix(" " + procdesc["unit"]) scanner = ScanWidget() disable_scroll_wheel(scanner) self.addWidget(scanner, 0, 0, -1, 1) start = ScientificSpinBox() start.setStyleSheet("QDoubleSpinBox {color:blue}") start.setMinimumSize(110, 0) start.setSizePolicy(QtWidgets.QSizePolicy( QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)) disable_scroll_wheel(start) self.addWidget(start, 0, 1) npoints = QtWidgets.QSpinBox() npoints.setMinimum(1) npoints.setMaximum((1 << 31) - 1) disable_scroll_wheel(npoints) self.addWidget(npoints, 1, 1) stop = ScientificSpinBox() stop.setStyleSheet("QDoubleSpinBox {color:red}") stop.setMinimumSize(110, 0) disable_scroll_wheel(stop) self.addWidget(stop, 2, 1) randomize = QtWidgets.QCheckBox("Randomize") self.addWidget(randomize, 3, 1) apply_properties(start) start.setPrecision() start.setRelativeStep() apply_properties(stop) stop.setPrecision() stop.setRelativeStep() apply_properties(scanner) def update_start(value): state["start"] = value*scale scanner.setStart(value) if start.value() != value: start.setValue(value) def update_stop(value): state["stop"] = value*scale scanner.setStop(value) if stop.value() != value: stop.setValue(value) def update_npoints(value): state["npoints"] = value scanner.setNum(value) if npoints.value() != value: npoints.setValue(value) def update_randomize(value): state["randomize"] = value randomize.setChecked(value) scanner.startChanged.connect(update_start) scanner.numChanged.connect(update_npoints) scanner.stopChanged.connect(update_stop) start.valueChanged.connect(update_start) npoints.valueChanged.connect(update_npoints) stop.valueChanged.connect(update_stop) randomize.stateChanged.connect(update_randomize) scanner.setStart(state["start"]/scale) scanner.setNum(state["npoints"]) scanner.setStop(state["stop"]/scale) randomize.setChecked(state["randomize"])
def __init__(self, procdesc, state): LayoutWidget.__init__(self) scale = procdesc["scale"] def apply_properties(widget): widget.setDecimals(procdesc["ndecimals"]) if procdesc["global_min"] is not None: widget.setMinimum(procdesc["global_min"]/scale) else: widget.setMinimum(float("-inf")) if procdesc["global_max"] is not None: widget.setMaximum(procdesc["global_max"]/scale) else: widget.setMaximum(float("inf")) if procdesc["global_step"] is not None: widget.setSingleStep(procdesc["global_step"]/scale) if procdesc["unit"]: widget.setSuffix(" " + procdesc["unit"]) scanner = ScanWidget() disable_scroll_wheel(scanner) self.addWidget(scanner, 0, 0, -1, 1) start = ScientificSpinBox() start.setStyleSheet("QDoubleSpinBox {color:blue}") start.setMinimumSize(110, 0) start.setSizePolicy(QtWidgets.QSizePolicy( QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)) disable_scroll_wheel(start) self.addWidget(start, 0, 1) npoints = QtWidgets.QSpinBox() npoints.setMinimum(1) npoints.setMaximum((1 << 31) - 1) disable_scroll_wheel(npoints) self.addWidget(npoints, 1, 1) stop = ScientificSpinBox() stop.setStyleSheet("QDoubleSpinBox {color:red}") stop.setMinimumSize(110, 0) disable_scroll_wheel(stop) self.addWidget(stop, 2, 1) def update_start(value): state["start"] = value*scale scanner.setStart(value) def update_stop(value): state["stop"] = value*scale scanner.setStop(value) def update_npoints(value): state["npoints"] = value scanner.setNum(value) scanner.startChanged.connect(start.setValue) scanner.numChanged.connect(npoints.setValue) scanner.stopChanged.connect(stop.setValue) start.valueChanged.connect(update_start) npoints.valueChanged.connect(update_npoints) stop.valueChanged.connect(update_stop) scanner.setStart(state["start"]/scale) scanner.setNum(state["npoints"]) scanner.setStop(state["stop"]/scale) apply_properties(start) apply_properties(stop) apply_properties(scanner)