Python 在仪表板上具有按钮功能的回调

Python 在仪表板上具有按钮功能的回调,python,plotly-dash,Python,Plotly Dash,我有一个dash应用程序,它的布局相当简单。这是我第一次使用dash,希望有人能帮助我 我要做的是让应用程序用户输入5个功能,然后单击submit按钮,该按钮将调用函数返回基于这5个功能的图表 到目前为止,我掌握的代码是: app = dash.Dash() app.layout = html.Div(children=[ html.H1(children='Regression Analyzer for Individual Market Securities', style={'te

我有一个dash应用程序,它的布局相当简单。这是我第一次使用dash,希望有人能帮助我

我要做的是让应用程序用户输入5个功能,然后单击submit按钮,该按钮将调用函数返回基于这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”应该调用的功能包括:开始日期、结束日期、名称、MA和错误

如您所见,compare_to_market1调用函数compare_to_market,我更愿意这样做,因为后一个函数相当长,但如果需要,我显然可以将它放在那里

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


非常感谢您的帮助。

因此,如果有任何变化,请拨打回拨电话

很可能您不想使用datetime,而是date

将compare_to_market调用替换为print调用,以便能够执行以下代码并查看回调调用:

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)

何时必须调用您的回调?没有依赖性抱歉,我不知道您的意思,当发生某些事情时,例如当您在drowdown中更改所选选项时,会调用回调,但您没有指出这一点。在这个层次上,最好是看dash plotly documentation/examplesYea,正如我说的,我不知道如何设置回调,但我已经在帖子中解释了我想做什么。在你的问题中,你没有说何时调用回调、它接收的输入或它产生的输出,这似乎是对的。我必须修正一些关于datetime格式的问题,但这很有帮助,谢谢。@mark21也许你看到了我答案的第一个版本,我将其编辑为使用date而不是datetime,并在Callback的输入依赖项中添加了我遗漏的MA。是的,我尝试将datetime切换为date,但问题与此稍有不同。我将发布另一个问题,如果你想尝试一下,我将链接到你。只是需要转换datetime正则表达式。实际上看起来我无法发布它,因为我被这个问题否定了。如果你投这一票,他们可能会让我问另一个?@mark21你的问题投了0票,你不能发布新的吗?DV来自我,因为您的问题不清楚,在您编辑您的问题之前,我无法取消DV。例如,如果您想编辑您的问题,明确表示您希望在开始日期、结束日期、名称、MA和err发生任何更改时调用回调。