在下面的代码中,当回调在应用程序的初始阶段被触发时,
State({'type': 'my-input', 'index': ALL}, 'value')
的值是无,尽管我已将它们设置为initial value
。您也可以在屏幕截图中看到这一点。
如果我点击
Submit
按钮,它们是可见的。
如何在没有用户交互的情况下让它们从一开始就可见?这个想法是用这个数据来展示一个数字。这意味着当用户打开页面时,将“自动”显示一个图形。
from dash import Dash, html, dcc, Input, Output, State, Patch, ctx, ALL
app = Dash(__name__, title="Dash App")
app.layout = html.Div([
html.Button('Add Input', id='add-input'),
html.Div(id='inputs-container'),
html.Button('Submit Input', id='submit-input'),
html.Div(id='output')
])
@app.callback(Output('inputs-container', 'children'), State('inputs-container', 'children'),
Input('add-input', 'n_clicks'))
def add_input(children, n_clicks):
patched_list = Patch()
if n_clicks is None:
patched_list.append(dcc.Input(id={'type': 'my-input', 'index': 0}, value='initial value'))
patched_list.append(dcc.Input(id={'type': 'my-input', 'index': 1}, value='initial value'))
else:
patched_list.append(dcc.Input(id={'type': 'my-input', 'index': n_clicks + 1}, value='initial value'))
return patched_list
@app.callback(Output('output', 'children'), State('inputs-container', 'children'),
State({'type': 'my-input', 'index': ALL}, 'value'), Input('submit-input', 'n_clicks'))
def submit_input(children, values, n_clicks):
if n_clicks is None or len(values) == 0:
values = [child.props['value'] for child in children if child.type == dcc.Input]
return f'You clicked button #{n_clicks}, which had the attribute: "{values}".'
if __name__ == '__main__':
app.run_server(debug=True)