diff --git a/RangeSlider/RangeSlider.py b/RangeSlider/RangeSlider.py index f4671c1..422252d 100644 --- a/RangeSlider/RangeSlider.py +++ b/RangeSlider/RangeSlider.py @@ -88,6 +88,9 @@ def __init__(self, master, variables, Width = 400, Height = 80, min_val = 0, max self.canv_W = self.W self.suffix=suffix self.variables=variables + if variables: + variables[0].trace_add("write", self._trace_vars_write0) + variables[1].trace_add("write", self._trace_vars_write1) self.step_marker = step_marker if self.step_marker: assert step_size > 0, "[step_size] must be provided if [step_marker] set to True." @@ -348,6 +351,14 @@ def __checkSelection(self, x, y): if bbox[0] < x and bbox[2] > x and bbox[1] < y and bbox[3] > y: return [True, idx] return [False, None] + + def _trace_vars_write0(self, *args): + firstVal = self.variables[0].get() + self.__moveBar(0, (firstVal - self.min_val)/(self.max_val - self.min_val)) + + def _trace_vars_write1(self, *args): + secondVal = self.variables[1].get() + self.__moveBar(1, (secondVal - self.min_val)/(self.max_val - self.min_val)) class RangeSliderV(Frame): @@ -445,6 +456,9 @@ def __init__(self, master, variables, Width = 80, Height = 400, min_val = 0, max self.canv_W = self.W self.suffix=suffix self.variables=variables + if variables: + variables[0].trace_add("write", self._trace_vars_write0) + variables[1].trace_add("write", self._trace_vars_write1) self.step_size= step_size / (self.max_val-self.min_val) if not show_value: self.slider_x = self.canv_W/2 # y pos of the slider @@ -685,3 +699,11 @@ def __checkSelection(self, x, y): if bbox[0] < x and bbox[2] > x and bbox[1] < y and bbox[3] > y: return [True, idx] return [False, None] + + def _trace_vars_write0(self, *args): + firstVal = self.variables[0].get() + self.__moveBar(0, (firstVal - self.min_val)/(self.max_val - self.min_val)) + + def _trace_vars_write1(self, *args): + secondVal = self.variables[1].get() + self.__moveBar(1, (secondVal - self.min_val)/(self.max_val - self.min_val))