Pyqt滑块没有更新

时间:2017-08-16 10:39:56

标签: python pyqt pyqt4 qslider

我在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'正如我设定的那样。选项卡中的其他小部件工作正常。我是否忘记了启用它或其他东西的简单方法?

1 个答案:

答案 0 :(得分:4)

文档说明:

  

滑块是用于控制有界值的经典小部件。它   让用户沿水平或垂直方向移动滑块手柄   凹槽并将手柄的位置转换为整数值   在合法范围内。

因此,setRangesetValuesetTickInterval仅接受 int 作为参数。也就是说 - 您只能通过 int 值移动滑块。

解决方法是将int值从QSlider转换为float,方法是将其乘以.01(或其他值),或者在this gist中实现自己的QDoubleSlider