Beispiel #1
0
class Slider(QtGui.QWidget):
    def __init__(self, minimum, maximum, label, tick=0, parent=None):
        super(Slider, self).__init__(parent=parent)
        self.verticalLayout = QtGui.QVBoxLayout(self)
        self.label = QtGui.QLabel(self)
        self.label.setAlignment(QtCore.Qt.AlignCenter)
        self.font = QtGui.QFont("?", 18)
        self.label.setFont(self.font)

        if label == "\u2113":
            self.spin = SpinBox(value=glo_var.l, bounds=[1, 20], parent=self)
            self.spin.setRange(1, 20)
            self.intspinargs = {"int": True, "step": 1}
            self.spin.setOpts(**self.intspinargs)
        elif label == "\u03b1":
            self.spin = SpinBox(value=glo_var.alpha,
                                bounds=[0, 1],
                                parent=self)
        else:
            self.spin = SpinBox(value=glo_var.beta, bounds=[0, 1], parent=self)

        self.verticalLayout.addWidget(self.label)

        self.verticalLayout.addWidget(self.spin)

        self.horizontalLayout = QtGui.QHBoxLayout()
        spacerItem = QtGui.QSpacerItem(0, 0, QtGui.QSizePolicy.Expanding,
                                       QtGui.QSizePolicy.Minimum)
        self.horizontalLayout.addItem(spacerItem)
        self.slider = QtGui.QSlider(self)
        self.slider.setOrientation(QtCore.Qt.Vertical)

        # check!
        self.text_label = label
        self.label.setText(self.text_label)

        self.horizontalLayout.addWidget(self.slider)

        spacerItem1 = QtGui.QSpacerItem(0, 20, QtGui.QSizePolicy.Expanding,
                                        QtGui.QSizePolicy.Minimum)
        self.horizontalLayout.addItem(spacerItem1)
        self.verticalLayout.addLayout(self.horizontalLayout)
        self.resize(self.sizeHint())
        self.minimum = minimum
        self.maximum = maximum
        self.x = None

        if label == "\u2113":
            self.x = 1
            # self.slider.setSingleStep(1)
            self.spin.sigValueChanging.connect(self.Intspinvalue)

        else:
            self.spin.sigValueChanging.connect(self.spinvalue)

        self.slider.minimumSizeHint()
        self.slider.setTickPosition(3)


# check whether the value is exact

    def Intspinvalue(self, sb, value):
        if sb.value() == 0:
            pass
        else:
            self.intsetLabelValue(sb.value(), fromsb=True)

    def spinvalue(self, sb, value):
        self.setLabelValue(sb.value(), fromsb=True)

    def setLabelValue(self, value, fromsb=False):

        if fromsb:
            self.x = value
            self.slider.setValue(self.x * glo_var.slid_precision)
        else:
            self.x = value / glo_var.slid_precision
            self.spin.setValue(self.x)

    def intsetLabelValue(self, value, fromsb=False):
        if value == 0:
            pass
        else:
            if fromsb:
                self.x = value
                self.slider.setValue(self.x)
            else:
                self.x = value
                print(self.x)
                self.spin.setValue(self.x)