2017-08-16 1 views
-1

Ich habe eine GUI in Qt Designer mit einem horizontalen Schieberegler in einem Rasterlayout innerhalb einer Registerkarte Widget erstellt. Hier ist der Code aus der GUI.py Datei:Pyqt Slider nicht aktualisieren

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) 

Ich habe eine Verbindung für das Freigabesignal in meinem Haupt-Code ein:

self.horizontalSlider.sliderReleased.connect(self.SmoothSelected) 

Zur Laufzeit bleibt der Schieber an der Startposition und ich kann es nicht bewegen. Getestet habe ich seinen Wert mit:

print(self.horizontalSlider.value()) 

aber ‚0‘, nicht ‚0,4‘ bekommen, wie ich den Wert eingestellt haben zu sein. Die anderen Widgets in der Registerkarte funktionieren einwandfrei. Habe ich etwas Einfaches vergessen, wie es zu aktivieren oder so?

Antwort

2

Dokumentation heißt es:

Der Schieber zum Steuern eines begrenzten Wert der klassische Widget ist. Es lässt den Benutzer einen Schieberegler Griff entlang einer horizontalen oder vertikalen Rille verschieben und übersetzt die Position des Griffs in einen Integer Wert innerhalb des legalen Bereichs.

Folglich setRange, setValue und setTickInterval nehmen nur int als Argument. Das heißt - Sie können den Schieberegler nur um int Werte verschieben.

Die Abhilfe entweder konvertiert int Wert von QSlider durch schweben sie auf .01 (oder einen anderen Wert) multipliziert wird, oder Ihren eigenen QDoubleSlider wie in this gist umzusetzen.

+0

Danke! Das hat funktioniert –