PyQt4:QSpinBox字符串

时间:2015-01-15 22:35:56

标签: python pyqt4 qspinbox

有没有一种简单的方法可以在PyQt4中创建一个旋转框,其变量值是字符串?我想创建一个在“低”,“中等”之间变化的旋转框。并且'高'。我环顾四周,找不到任何看起来很复杂的东西。在Tkinter中,它可能看起来像:

self.my_wordy_spinbox = Spinbox(parent, 
                                values = ['Medium', 'High', 'Low'],
                                textvariable = self.object_strength)

我注意到documentation它说" QSpinBox用于处理整数和离散值集(例如月份名称)"我认为可能导致字符串,但我无法找到更多。我很想使用组合框,但我觉得旋转盒更合适。

1 个答案:

答案 0 :(得分:3)

我真的没有看到这对于一个组合框有什么改进,特别是如果有多个字符串的话。

但是,如果你真的想要它,你只需要继承QSpinBox并重新实现textFromValuevalueFromText

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]