If you are looking to set a default value activ, it seems like my code is working :
elif field_type.startswith("picklist"):
empty_space_before = MDBoxLayout(size_hint_y=None, height=3)
if settings["column"] == "left":
self.sub_column_1.add_widget(empty_space_before)
else:
self.sub_column_2.add_widget(empty_space_before)
options = field_type.split("(")[1].strip(")").split(",")
default_value = settings.get("default", options[0]) # Use the first option if no default specified
column_value = MDSegmentedButton(size_hint=(1, None), height="30dp", pos_hint={'center_x': 0.5})
default_segment = None
for option in options:
segment = MDSegmentedButtonItem(MDSegmentButtonLabel(text=option.strip()))
if option.strip() == default_value:
segment.active = True
print(f"Default value for {column_name}: {option.strip()}")
column_value.add_widget(segment)
# Ajouter la picklist à gauche et le texte explicatif à droite
row_layout.add_widget(column_value)
if settings["column"] == "left":
self.sub_column_1.add_widget(column_label)
empty_space_after = MDBoxLayout(size_hint_y=None, height=5)
self.sub_column_1.add_widget(empty_space_after)
else:
self.sub_column_2.add_widget(column_label)
empty_space_after = MDBoxLayout(size_hint_y=None, height=5)
self.sub_column_2.add_widget(empty_space_after)
# Ajouter la ligne au bloc de saisie en fonction de la colonne définie
if settings["column"] == "left":
self.sub_column_1.add_widget(row_layout)
else:
self.sub_column_2.add_widget(row_layout)
# Stocker les champs de saisie pour les récupérer plus tard
self.input_fields[column_name] = column_value
I tried workarounds first since segment.state didn't seem to do what I wanted but a simple segment.active = True seemed to fix the problem ?