options用于设置我们的下拉选择部件中显示的选项,传入列表,列表每个元素为字典,必填键有:'label',用于设置对应选项显示的标签名称;'value',对应当前选项的值,也是我们书写回调函数接受的输入;'disabled',一般情况下不用设置,除非你想指定对应选项不可点选就设置为True;
multi,bool型,用于设置是否允许多选;
optionHeight,用于设置每个选项的显示像素高度,默认35;
placeholder,同Input()同名参数;
searchable,bool型,用于设置是否可以在输入框中搜索下拉选项;
search_value,可用作回调的输入,记录了用户的搜索内容;
value,记录用户已选择的选项,单选模式下为对应单个选项的'value'值,多选模式下为对应多个选项'value'值组成的列表;
app3.py
import dash import dash_bootstrap_components as dbc import dash_html_components as html from dash.dependencies import Input, Output import dash_core_components as dcc import json app = dash.Dash(__name__) app.layout = html.Div( dbc.Container( [ dcc.Dropdown(, placeholder='单选', options=[ {'label': item, 'value': item} for item in list('ABCD') ], style={ 'width': '300px' } ), html.Pre(id='dropdown-output-1', style={'background-color': '#d4d4d420', 'width': '300px'}), dcc.Dropdown(, placeholder='多选', multi=True, options=[ {'label': item, 'value': item} for item in list('ABCD') ], style={ 'width': '300px' } ), html.Pre(id='dropdown-output-2', style={'background-color': '#d4d4d420', 'width': '300px'}) ], style={'margin-top': '100px'} ) ) @app.callback( Output('dropdown-output-1', 'children'), Input('dropdown-input-1', 'value') ) def dropdown_output_1(value): if value: return json.dumps(value, indent=4) return dash.no_update @app.callback( Output('dropdown-output-2', 'children'), Input('dropdown-input-2', 'value') ) def dropdown_output_2(value): if value: return json.dumps(value, indent=4) return dash.no_update if __name__ == '__main__': app.run_server(debug=True) 图4 2.3 单选框与复选框我们分别可以使用dash_bootstrap_components中的RadioItems与Checklist来创建单选框与复选框:
单选框RadioItems
单选框的特点是我们只能在其展示的一组选项中选择1项。
它的参数options格式同Dropdown();
inline参数设置为True时会横向布局所有选项;
switch设置为True时会将每个选项样式切换为开关;
app4.py
import dash import dash_bootstrap_components as dbc import dash_html_components as html from dash.dependencies import Input, Output import dash_core_components as dcc import json app = dash.Dash(__name__) app.layout = html.Div( dbc.Container( [ dbc.RadioItems(, inline=True, switch=True, options=[ {'label': item, 'value': item} for item in list('ABCD') ], style={ 'width': '300px' } ), html.P(id='radio-items-output') ], style={'margin-top': '100px'} ) ) @app.callback( Output('radio-items-output', 'children'), Input('radio-items-input', 'value') ) def radio_items_output(value): if value: return '已选择:'+value return dash.no_update if __name__ == '__main__': app.run_server(debug=True) 图5复选框Checklist
与单选框相对的,是复选框,它的参数与RadioItems完全一致,唯一不同的是它是可以多选的:
app5.py
import dash import dash_bootstrap_components as dbc import dash_html_components as html from dash.dependencies import Input, Output import dash_core_components as dcc import json app = dash.Dash(__name__) app.layout = html.Div( dbc.Container( [ dbc.Checklist(, inline=True, options=[ {'label': item, 'value': item} for item in list('ABCD') ], style={ 'width': '300px' } ), html.P(id='check-list-output') ], style={'margin-top': '100px'} ) ) @app.callback( Output('check-list-output', 'children'), Input('check-list-input', 'value') ) def check_list_output(value): if value: return '已选择:'+'、'.join(value) return dash.no_update if __name__ == '__main__': app.run_server(debug=True) 图6