破折号上带有按钮功能的回调

callback with button feature on dash

我有一个布局相当简单的 dash 应用程序。这是我第一次使用破折号,所以希望有人能在这里帮助我。

我想要做的是让应用程序用户输入 5 个特征,然后单击提交按钮,该按钮将调用一个函数来 return 基于这 5 个特征的图表。

我目前的代码是:

app = dash.Dash()
app.layout = html.Div(children=[
    html.H1(children='Regression Analyzer for Individual Market Securities', style={'textAlign': 'center'
        }),
    
    html.Div([     
    dcc.DatePickerRange(
        id = 'my-date',
        min_date_allowed=datetime(2015, 1, 1),
        max_date_allowed=datetime(2020, 11, 11),
        initial_visible_month=datetime(2017, 8, 5),
        start_date=str(datetime(2015, 11, 1)),
        end_date=str(datetime(2020, 11, 1)))
    ]),
    
    html.Div([     
    dcc.Dropdown(id = 'MA',
    options=[
        {'label': 'Day Average', 'value': 'Day Average'},
        {'label': '7 Day Avg', 'value': '7 Day Avg'},
        {'label': '50 Day Avg', 'value': '50 Day Avg'},
        {'label': '200 Day Avg', 'value': '200 Day Avg'}
    ])]),
    
    html.Div([     
    dcc.Input(id = 'Name',
    placeholder='Enter stock ticker ...',
    type='text',
    value='AAPL') 
    ]),
    
    html.Div([     
    dcc.Slider(id = 'err',
    min=0,
    max=100,
    step=0.5,
    value=10)   
    ])
])

@app.callback()
def compare_to_market1():
    return compare_to_market()

函数 'compare_to_market1' 应该调用的特征是:start_date、end_date、名称、MA 和错误。

如您所见,compare_to_market1 调用了函数 compare_to_market,我宁愿这样保留,因为后一个函数很长,但如果需要。

主要是我显然不知道如何设置 app.callback 功能来获取正确的输入并将它们传递给 compare_to_market1 我想要 运行 的函数.

感谢任何帮助。

所以您想在发生任何变化时调用回调。

您很可能不想使用 datetimedate.

通过调用 print 替换对 compare_to_market 的调用,以便能够执行以下代码并查看调用回调:

from datetime import date
import dash
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Input, Output

app = dash.Dash()
app.layout = html.Div(children=[
    html.H1(children='Regression Analyzer for Individual Market Securities', style={'textAlign': 'center'
        }),
    
    html.Div([     
    dcc.DatePickerRange(
        id = 'my-date',
        min_date_allowed=date(2015, 1, 1),
        max_date_allowed=date(2020, 11, 11),
        initial_visible_month=date(2017, 8, 5),
        start_date=str(date(2015, 11, 1)),
        end_date=str(date(2020, 11, 1)))
    ]),
    
    html.Div([     
    dcc.Dropdown(id = 'MA',
    options=[
        {'label': 'Day Average', 'value': 'Day Average'},
        {'label': '7 Day Avg', 'value': '7 Day Avg'},
        {'label': '50 Day Avg', 'value': '50 Day Avg'},
        {'label': '200 Day Avg', 'value': '200 Day Avg'}
    ])]),
    
    html.Div([     
    dcc.Input(id = 'Name',
    placeholder='Enter stock ticker ...',
    type='text',
    value='AAPL') 
    ]),
    
    html.Div([     
    dcc.Slider(id = 'err',
    min=0,
    max=100,
    step=0.5,
    value=10)
    ]),
    
    html.Div(id='my-output')
])

@app.callback(
    Output(component_id='my-output', component_property='children'),
    [dash.dependencies.Input("my-date", "start_date"),
     dash.dependencies.Input("my-date", "end_date"),
     dash.dependencies.Input("Name", "value"),
     dash.dependencies.Input("MA", "value"),
     dash.dependencies.Input("err", "value")])
def compare_to_market1(startDate, endDate, name, ma, err):
    print(startDate, endDate, name, ma, err)

if __name__ == '__main__':
    app.run_server(debug=True)