Qt horizo​​ntalSlider 发送浮点值

cod*_*ler 5 python qt slider

我想用qt水平滑块发送一个浮点值“步骤”,我正在尝试这个,但它不起作用:

    horizontalSlider.setRange(0,25)
    horizontalSlider.setSingleStep(horizontalSlider.maximum()/100.0)
    horizontalSlider.valueChanged.connect(self.valueHandler)
Run Code Online (Sandbox Code Playgroud)

然后我在这里得到了价值:

    def valueHandler(self,value):    
        print value
Run Code Online (Sandbox Code Playgroud)

但是,然而,我得到的输出是 1,2,3,4,5,6,7,8 ......

Pav*_*hov 8

Qt silders 只能有整数值。您需要更改测量单位,以便整数精度就足够了。例如,通常100个滑块位置就足够了。因此,您需要设置 (0, 100) 滑块范围并缩放浮点值,以便最小值转换为 0,最大值转换为 100(即将浮点值转换为百分比)。

如果您想保持主代码简洁,您可以创建 Qt slider 的子类并在内部实现所描述的逻辑。


Ale*_*dar 5

由于您希望单步为 25/100 = 0.25,因此您应该这样做:

horizontalSlider.setRange(0,100)
horizontalSlider.setSingleStep(1)
horizontalSlider.valueChanged.connect(self.valueHandler)

def valueHandler(self,value):   
    scaledValue = float(value)/4     #type of "value" is int so you need to convert it to float in order to get float type for "scaledValue" 
    print scaledValue , type(scaledValue)
Run Code Online (Sandbox Code Playgroud)