#Same Call Back Function for all the widgets
def change_other_filters(key,value,filters_data):
column_name_key=key[1:]
column_values=value
remaining_filters=filter_names.remove(key)
for filter in remaining_filters:
filters_data[filter]= list(filters_data.query(“@column_name_key == @column_values”
[filter].unique())
#creating widgets in for loop with same callback function
filter_boxes = {}
for i in range(len(filter_names)):
options = list(filters_data[filter_names[i]].astype(str).unique())
options.sort()
filter_boxes[filter_names[i]] = st.sidebar.multiselect(label=f’SELECT {filter_names[i]} ‘,
key=f’k{filter_names[i]}’,
options=[‘All’] + options,
default=‘All’,
on_change=change_other_filters(key,filter_boxes[filter_names[i]],filters_data)
#HOW TO KNOW WHICH WIDGET CALLED THE CALLBACK FUNCTION