因此,我是Dash的新手,具有Shiny的经验,并且在配置下拉菜单时遇到了一些麻烦。因此,我在Dash中有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
中选择的医院第一个下拉菜单。
医院名称在hospital
的{{1}}列下。
答案 0 :(得分:0)
Dash不喜欢在构建布局(例如在回调内部)之后添加组件,这使此方法变得困难。我建议您查看this page并遵循“内容作为选项卡子级”选项卡。这将使您至少在布局中保留下拉列表的基本形式(包括所有重要的ID),然后使用回调填充值。
到那时,回调应该容易得多,因为它只需要更新已经存在的回调组件的options
属性即可。