PyQt4:QSpinBox 字符串
PyQt4: QSpinBox strings
有没有一种简单的方法可以在 PyQt4 中创建一个可变值是字符串的旋转框?我想创建一个在 'low'、'medium' 和 'high' 之间变化的旋转框。我环顾四周,找不到任何看起来不太复杂的东西。在 Tkinter 中,它可能看起来像这样:
self.my_wordy_spinbox = Spinbox(parent,
values = ['Medium', 'High', 'Low'],
textvariable = self.object_strength)
我在 documentation 中注意到它说 "QSpinBox is designed to handle integers and discrete sets of values (e.g., month names)" 我认为这可能会导致字符串,但我找不到更多关于它的信息。我很想改用组合框,但我觉得旋转框更合适。
我真的不明白这对组合框有何改进,尤其是当有多个字符串时。
然而,如果你真的想要它,你只需要继承 QSpinBox
并重新实现 textFromValue and valueFromText:
class StringBox(QtGui.QSpinBox):
def __init__(self, strings, parent=None):
super(StringBox, self).__init__(parent)
self.setStrings(strings)
def strings(self):
return self._strings
def setStrings(self, 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]
有没有一种简单的方法可以在 PyQt4 中创建一个可变值是字符串的旋转框?我想创建一个在 'low'、'medium' 和 'high' 之间变化的旋转框。我环顾四周,找不到任何看起来不太复杂的东西。在 Tkinter 中,它可能看起来像这样:
self.my_wordy_spinbox = Spinbox(parent,
values = ['Medium', 'High', 'Low'],
textvariable = self.object_strength)
我在 documentation 中注意到它说 "QSpinBox is designed to handle integers and discrete sets of values (e.g., month names)" 我认为这可能会导致字符串,但我找不到更多关于它的信息。我很想改用组合框,但我觉得旋转框更合适。
我真的不明白这对组合框有何改进,尤其是当有多个字符串时。
然而,如果你真的想要它,你只需要继承 QSpinBox
并重新实现 textFromValue and valueFromText:
class StringBox(QtGui.QSpinBox):
def __init__(self, strings, parent=None):
super(StringBox, self).__init__(parent)
self.setStrings(strings)
def strings(self):
return self._strings
def setStrings(self, 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]