PySide:SpinBox 使用一组固定值
PySide: SpinBox use a set of fixed values
我需要一个旋转框(或类似的东西)来使用一组固定的值。 SetSingleStep 不能解决问题,因为我需要类似的东西:
1 -> 5 -> 10 -> 100
有什么建议吗?
所以我终于找到了解决问题的方法。我通过调用 QSpinBox 并覆盖 byStep 方法创建了一个自定义旋转框,如下所示:
class SpinBoxSpecial(QtGui.QSpinBox):
def __init__(self, parent=None):
super(SpinBoxSpecial, self).__init__(parent)
self._step_range = [1, 5, 10, 100]
self._index = 2 # default index - in this case '10'
def get_range(self):
return self._step_range
def set_range(self, _range):
self._step_range = _range
def get_index(self):
return self._index
def set_index(self, _index):
self._index = _index
def stepBy(self, step):
value = self.value()
super(SpinBoxSpecial, self).stepBy(step)
if self.value() < value:
if self._index > 0:
self._index -= 1
else:
if self._index < len(self._step_range):
self._index += 1
self.setValue(self._step_range[self._index])
希望对您有所帮助!
我需要一个旋转框(或类似的东西)来使用一组固定的值。 SetSingleStep 不能解决问题,因为我需要类似的东西:
1 -> 5 -> 10 -> 100
有什么建议吗?
所以我终于找到了解决问题的方法。我通过调用 QSpinBox 并覆盖 byStep 方法创建了一个自定义旋转框,如下所示:
class SpinBoxSpecial(QtGui.QSpinBox):
def __init__(self, parent=None):
super(SpinBoxSpecial, self).__init__(parent)
self._step_range = [1, 5, 10, 100]
self._index = 2 # default index - in this case '10'
def get_range(self):
return self._step_range
def set_range(self, _range):
self._step_range = _range
def get_index(self):
return self._index
def set_index(self, _index):
self._index = _index
def stepBy(self, step):
value = self.value()
super(SpinBoxSpecial, self).stepBy(step)
if self.value() < value:
if self._index > 0:
self._index -= 1
else:
if self._index < len(self._step_range):
self._index += 1
self.setValue(self._step_range[self._index])
希望对您有所帮助!