ダッシュには、複数値の選択をサポートするNice Dropdown コンポーネントがあります。私のアプリケーションでは、ユーザーは複数のドロップダウンメニューを介してデータセグメンテーションを実行し、プロパティ「A」、「B」、「C」、「D」、および「E」を選択できます。プロパティの否定に基づいてユーザーがセグメント化できるようにすることも役立ちます。たとえば、「not A」や「not E」と言います。
アイテムのクリックをサポートするドロップダウンコンポーネントはすでにありますか(つまり、ユーザーが選択したプロパティ「A」をクリックすると、要素が赤になり、「not A」が選択されていることを示すことができます)?たとえば、ユーザーが multi-value dropdown の例で「New York City」をクリックすると、それを含む対応する「ボックス」の色が変化するとします。
Dashのドキュメント 独自のコンポーネントの作成方法を説明します ですが、これは単にextendしたいシナリオをカバーしていません既存のコンポーネント。そのようなコンポーネントがない場合、どのようにしてコンポーネントを作成するのですか?
さらなる背景:
plotly forum でディスカッションがあり、ユーザーは既存のコンポーネントを拡張する方法を説明しています。これの主な欠点は、コンポーネントに変更を加えるか、新しいダッシュバージョンがリリースされるたびに、ライブラリ全体を更新して再構築する必要があるということです dash-core-components ライブラリ。
これまでのところ明らかな進展なしにこのケースをカバーするチュートリアルを書くためのダッシュドキュメントに issue open があります。
ドロップダウンチェックリストを効果的に作成することにより、ネイティブダッシュでこれを実現する方法があります。これは、dash_html_components.Details
およびdash_html_components.Summary
。これはHTML5のネイティブです。
サンプルコード:
import datetime
import dash
import dash_core_components as dcc
import dash_bootstrap_components as dbc
import dash_html_components as html
app = dash.Dash(external_stylesheets = [dbc.themes.BOOTSTRAP])
server = app.server
app.layout = dbc.Container(
children=[
html.Details([
html.Summary('Select city...'),
html.Br(),
dbc.Col([
dcc.Checklist(
options=[
{'label': 'New York City', 'value': 'NYC'},
{'label': 'Montréal', 'value': 'MTL'},
{'label': 'San Francisco', 'value': 'SF'}
],
value=['NYC', 'MTL'],
labelStyle = {'display': 'block'}
)
])
])
])
if __name__ == '__main__':
app.run_server(debug=True)