2017-11-26 13 views
1

より大きい私はダニが正しいGUIを開くと、私は私のスライダーのいくつかのために、私は10ではなく1Pythonの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) 

このコード意志レットurn 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 ...)のラベルを意味し、スライダーを作成するときにそれらを追加する方法はありますか? –