有没有办法创建一个 QSpinbox 将自己设置为第一个值,当它到达末尾时,再次按下步进按钮?
我尝试在自定义 QSpinBox 中执行此操作,但发生的情况是,当它达到最后一个值时,y 会立即重置,这导致永远看不到最后一个值。
from PyQt5.QtWidgets import QSpinBox
from music import TonoFactory
_tf = TonoFactory()
class StringBox(QSpinBox):
def __init__(self, parent=None):
super(StringBox, self).__init__(parent)
strings = []
for key in _tf.notas.keys():
strings.append(key)
self.setStrings(strings)
self.editingFinished.connect(self.reset_spin)
def strings(self):
return self._strings
def setStrings(self, strings):
strings = list(strings)
self._strings = tuple(strings)
self._values = dict(zip(strings, range(len(strings))))
self.setRange(0, len(strings) - 1)
def textFromValue(self, value):
return self._strings[value]
def valueFromText(self, text):
return self._values[text]
def reset_spin(self):
if self.value() == len(self.strings()) -1:
self.setValue(0)