Python 如何使用Dash调用函数,并使用非';t显式定义为输入
我使用Dash来读取JSON,并根据它接收的数据创建大量输入字段,并将结果可视化。我希望有一个函数,当表单通过button press提交时,它将创建一个JSON,并将所有输入字段的值作为状态Python 如何使用Dash调用函数,并使用非';t显式定义为输入,python,visualization,plotly-dash,Python,Visualization,Plotly Dash,我使用Dash来读取JSON,并根据它接收的数据创建大量输入字段,并将结果可视化。我希望有一个函数,当表单通过button press提交时,它将创建一个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
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)
应用程序在上述状态下不带回调运行,但如果它只有
输入('1','value')
,则将在2中获取列表。我如何才能让它工作?这里的关键是在列表中传递您的状态作为第三个参数。规则是输出作为第一个参数,输入作为第二个参数,状态作为第三个参数。输入和状态都必须在列表中传递。此外,您必须确保对于每个输入和状态,回调函数都必须接受一个参数。因此,在你的情况下,你必须这样做:
@app2.callback(
Output(component_id='div2', component_property='children'),
[Input('1', 'value')],
[State('2', 'value')]
)
def update_output_div(input_value1, input_value2):
....
请记住,如果将第二个输入值设置为state,则在更改时不会触发回调函数。要使其在更改时触发回调,必须将其声明为输入,并与其他输入一起放入列表。我理解,但是我在这里使用的列表是一个测试,它实际上是100个id,因此此方法不实用。我正在寻找一种方法来添加一个可以通过编程创建的列表。此时,您可能对创建自己的仪表板组件感兴趣--将回调放入react--@Wf19