PySide: SpinBox использует набор фиксированных значений - PullRequest
0 голосов
/ 27 ноября 2018

Мне нужен спинбокс (или что-то подобное), чтобы использовать фиксированный набор значений.SetSingleStep не работает, потому что мне нужно что-то вроде:

1 -> 5 -> 10 -> 100

Есть предложения?

1 Ответ

0 голосов
/ 03 декабря 2018

Итак, у меня наконец-то есть решение проблемы.Я создал собственный спинбокс, выполнив подкассировку 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])

Надеюсь, это поможет!

...