Plotly Dash: 在Markdown文本中显示一个变量

问题描述 投票:0回答:1

我是Dash和Plotly生态系统的新手,几天前开始构建一个基于Web的仪表盘。

下面是一段代码。

import dash
import dash_html_components as html
import dash_core_components as dcc


# initialize the application
app = dash.Dash()

# define the layout of the app
app.layout = html.Div([

# add a date range selector
dcc.DatePickerRange(
    id = 'my-date-picker-range',
    min_date_allowed = dt(2010,1,4),
    max_date_allowed = dt(2020, 12, 31),
    initial_visible_month = dt(2020, 5, 23)
),

html.Div(id = 'output-container-date-picker-range'),

# add some markdown text
dcc.Markdown(f'''
    This report covers the time period spanning {start_date} to {end_date}.
    '''),

])


@app.callback(
    dash.dependencies.Output('output-container-date-picker-range', 'children'),
    [dash.dependencies.Input('my-date-picker-range', 'start_date'),
     dash.dependencies.Input('my-date-picker-range', 'end_date')])

app.run_server(debug = True)

我正在尝试显示 start_dateend_date 变量在markdown文本中(使用一个简单的 f string). 不幸的是,我得到了以下错误信息。

NameError: name 'start_date' is not defined

是否可以在Markdown文本中包含变量输出? 谢谢!我是Dash和Plotly生态系统的新手。

python plotly markdown plotly-dash
1个回答
2
投票

你使用了一个装饰器(@app.callback),但你没有把它附加到一个要执行的函数上。你需要将装饰器附加到负责更新正确div的函数上。

我认为你最好的选择是坚持使用你的函数。文件.

这样就能得到和你想要的类似的结果。

import dash
import dash_html_components as html
import dash_core_components as dcc
from datetime import datetime as dt

# initialize the application
app = dash.Dash()

# define the layout of the app
app.layout = html.Div([

    # add a date range selector
    dcc.DatePickerRange(
        id = 'my-date-picker-range',
        min_date_allowed = dt(2010,1,4),
        max_date_allowed = dt(2020, 12, 31),
        initial_visible_month = dt(2020, 5, 23)
    ),

    html.Div(id = 'output-container-date-picker-range'),
])

@app.callback(
    dash.dependencies.Output('output-container-date-picker-range', 'children'),
    [dash.dependencies.Input('my-date-picker-range', 'start_date'),
     dash.dependencies.Input('my-date-picker-range', 'end_date')])
def update_output_div(start_date, end_date):
    return f"This report covers the time period spanning {start_date} to {end_date}"

app.run_server(debug = True)
© www.soinside.com 2019 - 2024. All rights reserved.