I wanted to create an interface in Python that had a row of icons at the top. Depending on the screen being displayed, I wanted one of those icons to be highlighted or a different color than the others.
This proved to be more challenging than I expected. You can set the color of all of the icons, but setting the color of a single one is a different story.
The solution that I came up with was to create a function that sets the target icon color when the program loads, rather than trying to do it as part of a KivyMD attribute of the TopAppBar widget.
def set_icon_color(self, dt):
screen_1_icon = self.screen_1.ids.menu_app_bar.ids.right_actions.children
#Tell the method where to find the homescreen icon
screen_1_icon[0].theme_icon_color = "Custom"
screen_1_icon[0].text_color = "00ADB5"
#define what the icon should look like
screen_2_icon = self.screen_2.ids.menu_app_bar.ids.right_actions.children
screen_2_icon[1].theme_icon_color = "Custom"
screen_2_icon[1].text_color = "00ADB5"
screen_2_icon = self.screen_3.ids.menu_app_bar.ids.right_actions.children
screen_3_icon[2].theme_icon_color = "Custom"
screen_3_icon[2].text_color = "00ADB5"
We call this function on program load. This sets the color of the target individual icon on each screen, without affecting the others. When I switch to any given screen, the appropriate icon is already highlighted with a distinct color.
The other thing I had