diff --git a/Orange/widgets/unsupervised/owlouvainclustering.py b/Orange/widgets/unsupervised/owlouvainclustering.py index 3ddc4c68fa4..46ae021df11 100644 --- a/Orange/widgets/unsupervised/owlouvainclustering.py +++ b/Orange/widgets/unsupervised/owlouvainclustering.py @@ -110,7 +110,7 @@ def __init__(self): ) # type: QCheckBox self.apply_pca_cbx = gui.checkBox( preprocessing_box, self, "apply_pca", label="Apply PCA preprocessing", - callback=self._invalidate_graph, + callback=self._apply_pca_changed, ) # type: QCheckBox self.pca_components_slider = gui.hSlider( preprocessing_box, self, "pca_components", label="PCA Components: ", minValue=2, @@ -145,6 +145,10 @@ def __init__(self): callback=lambda: self._on_auto_commit_changed(), ) # type: QWidget + def _apply_pca_changed(self): + self.controls.pca_components.setEnabled(self.apply_pca) + self._invalidate_graph() + def _invalidate_preprocessed_data(self): self.preprocessed_data = None self._invalidate_pca_projection() @@ -404,6 +408,8 @@ def set_data(self, data): prev_data, self.data = self.data, data self.openContext(self.data) + # Make sure to properly enable/disable slider based on `apply_pca` setting + self._apply_pca_changed() # If X hasn't changed, there's no reason to recompute clusters if prev_data and self.data and np.array_equal(self.data.X, prev_data.X):