2015-01-15 2 views
1

가변 값이 문자열 인 PyQt4에서 스핀 상자를 만드는 간단한 방법이 있습니까? 나는 'low', 'medium'과 'high'사이에서 변화하는 spinbox를 만들고 싶다. 나는 주변을 둘러 보았고 매우 복잡해 보이지 않는 것을 찾을 수 없었다. Tkinter의에서이 하찮게과 같습니다 나는 그것이 말했다 documentation에서 발견PyQt4 : QSpinBox 문자열

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

"QSpinBox는 정수와 값의 개별 세트를 처리 할 수 ​​있도록 설계되어있다 (예를 들어, 월 이름)"나는 내가 문자열로 이어질 거라고 생각하지만, 더 이상 찾을 수 없습니다. 나는 대신에 콤보 박스를 사용하라고 유혹을 받는다. 그러나 나는 스핀 박스가 더 적절할 것이라고 생각한다.

답변

2

나는 이것이 어떤 방법 으로든 콤보 상자를 개선하는 방법을 알지 못합니다. 특히 몇 개 이상의 문자열이있는 경우 특히 그렇습니다. 당신이 정말로 원하는 경우

그러나, 당신은 단지 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]