我正在滚动区域中创建一个带有多个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 ...
有没有办法保留这个值,只会返回刻度值? 还有一种方法可以用它的值添加标签吗?
答案 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:如果您希望鼠标单击直接跳到滑块位置,请参阅: