Python PyQt4 QSlider Interval大于1

时间:2017-11-26 10:04:23

标签: python user-interface pyqt4 qslider

我正在滚动区域中创建一个带有多个QSlider的gui,对于我的一些滑块,我需要间隔10而不是1.

当我打开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)

此代码将返回10,11,12,13 ...而不是10,20 ...

有没有办法保留这个值,只会返回刻度值? 还有一种方法可以用它的值添加标签吗?

2 个答案:

答案 0 :(得分:1)

实际上,不,没有这方面没有简单的解决方案,所以最好的办法就是清理self.slider_value_change中的价值。

答案 1 :(得分:1)

解决此问题的简单方法是考虑滑块位置的数量,而不是特定的

对于间隔为10的10-90的值范围,只有9个可能的位置。所以滑块应该像这样配置:

It looks delicious!
Mmm yummy !
It looks delicious!
Mmm yummy !
It looks rotten
Garbage !

现在您需要做的就是乘以10得到所需的值:

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)

这里的基本思想是,设置间隔为1可以消除干预值的可能性 - 因此只能将滑块拖动到一组固定的位置。

关于刻度标记的问题,请参阅:

PS:如果您希望鼠标单击直接跳到滑块位置,请参阅: