Delete qfloatslider.py
This commit is contained in:
parent
5eb369ae52
commit
9ea47189f5
@ -1,61 +0,0 @@
|
|||||||
from PyQt5 import QtCore, QtGui, QtWidgets
|
|
||||||
|
|
||||||
__all__ = ['QFloatSlider']
|
|
||||||
|
|
||||||
|
|
||||||
class QFloatSlider(QtWidgets.QSlider):
|
|
||||||
"""
|
|
||||||
Subclass of QtWidgets.QSlider
|
|
||||||
Horizontal slider giving floating point values.
|
|
||||||
Usage: QFloatSlider(min, max, step, default)
|
|
||||||
where min = minimum value of slider
|
|
||||||
max = maximum value of slider
|
|
||||||
step = interval between values. Must be a factor of (max-min)
|
|
||||||
default = default (starting) value of slider
|
|
||||||
"""
|
|
||||||
def __init__(self, min_value, max_value, step, default):
|
|
||||||
super().__init__(QtCore.Qt.Horizontal)
|
|
||||||
self.precision = 0.001
|
|
||||||
self.min_value = min_value
|
|
||||||
self.max_value = max_value
|
|
||||||
self.step = step
|
|
||||||
self.default = default
|
|
||||||
self.quotient, self.remainder = self._float_divmod(\
|
|
||||||
self.max_value-self.min_value, self.step)
|
|
||||||
if self.remainder:
|
|
||||||
raise ValueError("{} does not fit evenly between {} and {}"\
|
|
||||||
.format(step, min_value, max_value))
|
|
||||||
super().setMinimum(0)
|
|
||||||
super().setMaximum(self.quotient)
|
|
||||||
super().setSingleStep(1)
|
|
||||||
super().setValue(self._float_to_int(self.default))
|
|
||||||
super().valueChanged.connect(self._value_handler)
|
|
||||||
self.slider_value = 2.0
|
|
||||||
|
|
||||||
# This is mostly disgusting python i hate floating points >:(
|
|
||||||
def _float_divmod(self,a,b):
|
|
||||||
"""
|
|
||||||
Basically the divmod function but it works for floats (try 0.3 % 0.1 smh)
|
|
||||||
Returns the quotient, and a remainder.
|
|
||||||
"""
|
|
||||||
a = abs(a)
|
|
||||||
b = abs(b)
|
|
||||||
n = 1
|
|
||||||
while True:
|
|
||||||
c = a - b
|
|
||||||
c = abs(c)
|
|
||||||
if c < self.precision:
|
|
||||||
return (n, 0)
|
|
||||||
elif c > a:
|
|
||||||
return (n-1, a)
|
|
||||||
a = c
|
|
||||||
n += 1
|
|
||||||
|
|
||||||
def _float_to_int(self, a):
|
|
||||||
return int(round(a/self.step))
|
|
||||||
|
|
||||||
def _int_to_float(self, a):
|
|
||||||
return self.min_value+a*self.step
|
|
||||||
|
|
||||||
def _value_handler(self):
|
|
||||||
self.slider_value = self._int_to_float(super().value())
|
|
Loading…
Reference in New Issue
Block a user