def update_levels(self): if not self.data: return if not self.threshold_low < self.threshold_high: # TODO this belongs here, not in the parent self.parent.Warning.threshold_error() return else: self.parent.Warning.threshold_error.clear() if self.img.image is not None: levels = get_levels(self.img.image) else: levels = [0, 255] prec = pixels_to_decimals((levels[1] - levels[0])/1000) rounded_levels = [float_to_str_decimals(levels[0], prec), float_to_str_decimals(levels[1], prec)] self._level_low_le.validator().setDefault(rounded_levels[0]) self._level_high_le.validator().setDefault(rounded_levels[1]) self._level_low_le.setPlaceholderText(rounded_levels[0]) self._level_high_le.setPlaceholderText(rounded_levels[1]) ll = float(self.level_low) if self.level_low is not None else levels[0] lh = float(self.level_high) if self.level_high is not None else levels[1] ll_threshold = ll + (lh - ll) * self.threshold_low lh_threshold = ll + (lh - ll) * self.threshold_high self.img.setLevels([ll_threshold, lh_threshold])