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