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)