Yeah, there is a dash dropdown component
https://dash.plot.ly/dash-core-components/dropdown
and mine looks like this:
dcc.Dropdown(
options=self._options,
id='filter_unit_dropdown_{0}_{1}_{2}'.format(self._deviceNumber, self._servoNumber, self._filterIndex),
className='three columns'
)
with self._options
being
self._options = [{'label': 'None', 'value': None}]
for filter in self._servoController.getFilterOptions():
self._options.append({'label': filter.__name__, 'value': filter.__name__})
and getFilterOptions()
works in the way I previously described:
def getFilterOptions(self):
return [filter for filter in Filter.__subclasses__()]
As for the callback structure
def _createFieldVisibCallback(self, dropdownID, filterFieldID):
def callback(inputValue):
return self._servoController.filterFieldVisibility(filterFieldID, inputValue, self._deviceNumber, self._servoNumber, self._filterIndex)
return callback
def setCallbacks(self):
dropdown = 'some_id'.format(self._deviceNumber, self._servoNumber, self._filterIndex)
frequencyField = 'another_id'.format(self._deviceNumber, self._servoNumber, self._filterIndex)
dynamically_generated_function = self._createFieldVisibCallback(dropdown, frequencyField)
self._app.callback(
Output(frequencyField, 'style'),
[Input(dropdown, 'value')]
)(dynamically_generated_function)
and lastly the functionality of
_servoController.filterFieldVisibility(xxx)
is what I described in the post before.