我在Qt Designer中创建了一个GUI,在标签小部件的网格布局中有一个水平滑块。以下是GUI.py文件中的代码:
self.horizontalSlider = QtGui.QSlider(self.tab)
self.horizontalSlider.setOrientation(QtCore.Qt.Horizontal)
self.horizontalSlider.setObjectName(_fromUtf8("horizontalSlider"))
self.horizontalSlider.setRange(0.1,0.4)
self.horizontalSlider.setValue(0.4)
self.horizontalSlider.setTickInterval(0.05)
self.gridLayout_4.addWidget(self.horizontalSlider, 3, 1, 1, 1)
我在主代码中设置了释放信号的连接:
self.horizontalSlider.sliderReleased.connect(self.SmoothSelected)
在运行时,滑块保持在起始位置,我无法移动它。我测试了它的价值:
print(self.horizontalSlider.value())
但得到' 0'而不是' 0.4'正如我设定的那样。选项卡中的其他小部件工作正常。我是否忘记了启用它或其他东西的简单方法?
答案 0 :(得分:4)
文档说明:
滑块是用于控制有界值的经典小部件。它 让用户沿水平或垂直方向移动滑块手柄 凹槽并将手柄的位置转换为整数值 在合法范围内。
因此,setRange
,setValue
和setTickInterval
仅接受 int 作为参数。也就是说 - 您只能通过 int 值移动滑块。
解决方法是将int值从QSlider
转换为float,方法是将其乘以.01(或其他值),或者在this gist中实现自己的QDoubleSlider
。