2017-11-26 19 views
1

내 슬라이더의 일부 나는 10의 간격과 내가 GUI를 열 때하지 1.파이썬 PyQt4 QSlider 간격보다 큰 1

진드기가 올바른을 필요로하는 scrollarea 여러 QSlider와 GUI를 만드는 중이라서 10의 점프를 가지고,하지만 난 현재 값을 반환 할 때 난 아직도 예를 들어, 틱 사이의 값을 얻을 수 있습니다 :

slider = QtGui.QSlider(QtCore.Qt.Horizontal) 
slider.setMaximum(90) 
slider.setMinimum(10) 
slider.setTickInterval(10) 
slider.setTickPosition(QtGui.QSlider.TicksBelow) 
slider.valueChanged.connect(self.slider_value_change) 

기능은 다음과 같습니다

def slider_value_change(self,value): 
    print(value) 

이 코드 것 ret 항아리 10,11,12,13 ... 대신 10,20 ...

진드기 값만 반환하도록 값을 유지하는 방법이 있습니까? 진드기에 값으로 lable을 추가하는 방법이 있습니까?

답변

1

이 문제를 해결하는 간단한 방법은 이 아닌 숫자가 인 슬라이더 위치로 생각하는 것입니다.

10의 간격으로 10-90의 값 범위에 대해 9 개의 가능한 위치 만 있습니다. 그래서 슬라이더는 다음과 같이 구성해야합니다 :

slider = QtGui.QSlider(QtCore.Qt.Horizontal) 
slider.setMinimum(1) 
slider.setMaximum(9) 
slider.setTickInterval(1) 
slider.setSingleStep(1) # arrow-key step-size 
slider.setPageStep(1) # mouse-wheel/page-key step-size 
slider.setTickPosition(QtGui.QSlider.TicksBelow) 
slider.valueChanged.connect(self.slider_value_change) 

이제 당신이해야 할 모든 필요한 값을 얻을 수 곱하기 10입니다 : 기본 개념 여기

def slider_value_change(self, value): 
    print(value * 10) 

를, 간격을 설정하는 것입니다 1은 중간 값의 가능성을 제거하므로 고정 된 위치 세트를 통해서만 슬라이더를 끌 수 있습니다.

틱 마크 라벨의 질문에

, 참조 :


PS를 : 당신이 마우스 클릭을 원하는 경우 점프 직선 슬라이더 위치로, 참조 :이 라벨에 대한 사실도

1

사실, 아니요, 이에 대한 간단한 해결책이 없으므로 가장 좋은 건 self.slider_value_change의 값을 삭제하는 것입니다.

+1

인가? 나는 그들을 수동으로 위치에 추가해야합니까 아니면 더 간단한 방법이 있습니까? –

+0

변경 될 때마다 슬라이더 값을 올바른 값으로 업데이트 할 수 있습니다. 피드백 루프가 실행되지 않도록하십시오. – ypnos

+0

나는 각 틱의 레이블 (10,20,30 ...)을 의미했는데 슬라이더를 만들 때이를 추가하는 방법이 있습니까? –