从在回调函数中创建的另一个下拉列表创建下拉项



所以我是达世币的新手,有Shiny的经验,并且在配置下拉菜单时遇到了一些麻烦。所以我在达世币中有 3 个选项卡,我目前的行为是在用户单击medicaid选项卡时创建一个下拉菜单。我不希望其他两个选项卡出现此下拉列表,因此为什么它在我的回调函数中。此下拉列表(例如state dropdown( 然后为用户提供状态列表。

我的问题实际上在于如何从state dropdown中获取输入值,因为它在回调函数中......

import dash
import dash_core_components as dcc
import dash_html_components as html
import pandas as pd
from dash.dependencies import Input, Output
import plotly.graph_objs as go

app = dash.Dash(__name__)
df = pd.read_csv("Timely and Effective Care - Hospital.csv", engine='python', sep=None)
app.layout = html.Div(children=[
# tab selection menu dynamically created
html.Div([
dcc.Tabs(
id='menu-tabs',
value='tab-1',
className='custom-tabs-container',
children=[
dcc.Tab(
label='Medicaid',
value='medicaid',
),
dcc.Tab(
label='Commercial',
value='commercial',
),
dcc.Tab(
label='Uninsured',
value='uninsured'
),
]),
html.Div(id='state-dropdown'),
html.Div(id='sample')
])
], className='wrapper')

@app.callback(Output('state-dropdown', 'children'),
[Input('menu-tabs', 'value')])
def render_dropdown(tab):
if tab == 'medicaid':
return html.Div(children=[dcc.Dropdown(id='states',
options=[{'label': i, 'value':i}
for i in df['State'].unique()]
)])

我想要的是要在medicaid选项卡中创建另一个下拉列表......用户从第一个下拉列表中选择一个州后,第二个下拉列表应仅列出从第一个下拉列表中选择的state内的医院。

医院名称位于dfhospital列下。

Dash不喜欢在构建布局后添加组件(例如在回调中(,这使得这种方法变得困难。我建议查看此页面并遵循"内容作为标签子项"方法的选项卡。这将允许您在布局中至少保留下拉列表的基本形式(包括所有重要的 ID(,然后使用回调填充值。

此时,回调应该容易得多,因为它只需要更新已经存在的回调组件的optionsprop。

最新更新