2017-08-16 72 views
-1

我已經在Qt Designer中創建了一個圖形用戶界面,在選項卡窗口小部件中的網格佈局內部有一個水平滑塊。下面是從GUI.py文件中的代碼:Pyqt滑塊不更新

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',因爲我已經設置了值。該選項卡中的其他小部件工作正常。我忘了一些簡單的事情,比如啓用它或什麼?

回答

2

文檔狀態:

滑塊是用於控制有界值的經典部件。它可以讓用戶沿水平或垂直凹槽移動滑塊手柄,並將手柄的位置翻譯成整數值 在合法範圍內。

因此,setRangesetValuesetTickInterval只接受INT作爲參數。即 - 您只能通過int值移動滑塊。

解決方法是將int值從QSlider轉換爲float,方法是將其乘以.01(或其他值),或執行QDoubleSlider(如this gist)。

+0

謝謝!這工作 –