【问题标题】:PyQt4: QSpinBox stringsPyQt4:QSpinBox 字符串
【发布时间】:2015-01-15 22:35:55
【问题描述】:

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

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

我在documentation 中注意到它说“QSpinBox 旨在处理整数和离散值集(例如月份名称)”,我认为这可能会导致字符串,但我找不到更多关于它的内容。我很想改用组合框,但我觉得旋转框更合适。

【问题讨论】:

    标签: python pyqt4 qspinbox


    【解决方案1】:

    我真的不明白这对组合框有什么改进,尤其是在有多个字符串的情况下。

    但是,如果你真的想要它,你只需要继承 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]
    

    【讨论】:

    • 这太棒了。我可以直接在我的代码中使用它。这正是我想要的!
    猜你喜欢
    • 2013-10-10
    • 1970-01-01
    • 2012-03-13
    • 1970-01-01
    • 2014-02-08
    • 1970-01-01
    • 2012-03-05
    • 2018-04-12
    相关资源
    最近更新 更多