Я использую Da sh для чтения из JSON и создания ряда полей ввода на основе данных, которые он принимает, и визуализации результатов. Я хотел бы иметь функцию, которая будет создавать JSON, когда форма отправляется нажатием кнопки, принимая значения всех полей ввода в качестве состояний.
import dash
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Input, Output, State
import plotly.graph_objects as go
import json
app=dash.Dash
output = []
in2 = []
for (x,y) in data.items():
in2.append(State(x, 'value'))
output.append(html.Label(y['constraint_name']))
if y['constraint_type']=='fs':
output.append(dcc.RadioItems(id=x,
options=[
{"label" : "On", "value" : "On"},
{"label" : "Off", "value" : "Off"}
],
value = "On"
),)
elif y['constraint_type']=='dur':
output.extend((html.Br(),dcc.Input(id=x,
type='number',
value=10,
min=0
), html.Label("People ")))
output.extend((html.Br(), html.Br()))
output.append(html.Button('Submit', id='submit'))
output.append(html.Div(id="div2"))
app.layout = html.Div(output, style={'width': '44%', 'display': 'inline-block', 'vertical-align': 'top'})
@app.callback(
Output(component_id='div2', component_property='children'),
in2
)
def update_output_div(input_value):
teststring1 = ""
for val in input_value:
teststring1 += val
return 'You\'ve entered "{}"'.format(teststring1)
Приложение не запускается с обратным вызовом в вышеуказанном состоянии, но примет список in2
, если оно имеет Input('1','value')
. Как я могу заставить это работать?