Model doesn't show colors of scalars

Hi,

I am trying to a custom loadable module in Python that has a QComboBox that shows the scalars similar to the one in the Models module. The item list and combo box work fine but the colors are not updated correctly on the model. I checked the correct ModelDisplayNode and saw that the ActiveScalarName, ScalarRangeFlag were all correct but the ScalarRange is always at (0, -1). The only way to fix this is to go to the Models module and click on that exact model node and then the color will be updated accordingly.
Here are the relevant pieces of code:


# ComboBox
bio_mech_selector = qt.QComboBox()
bio_mech_selector.activated.connect(self.on_select_scalar)
# Function 
def on_select_scalar(self):
    if self.timeline_slider.value>0:
        self.model_display_node = slicer.mrmlScene.GetNodeByID("SomeNodeID")
        self.model_display_node.SetActiveScalarName(self.bio_mech_selector.currentText)

I have several model nodes that can be selected using a slider and use a single model_display_node. My question is how can I make the Combo Box choice apply the colors correctly without the need to go to Models module and click on each of the model nodes?

SetActiveScalarName only sets the scalar name, but you also need to set scalar location (point or cell data). I would recommend using SetActiveScalar method, which sets scalar name and location at once.

1 Like