Dash 应用程序自动更新 dcc.Interval 不工作

Dash app auto update with dcc.Interval not working

我正在尝试使用 Dcc.Interval 和回调让我的仪表板自动更新。我不知道我在这里做错了什么。 html.P 组件“children”没有更新,而且似乎没有启动间隔:

app.layout = html.Div([
# Previous day column
dbc.Col([html.H1(PREV_DAY,
                 style={'textAlign': 'center', 'height': '5%', 'margin-top': '30px', 'margin-bottom': '25px',
                        'font-family': 'Consolas', 'font-size': 'xxx-large'}),
         dbc.Card(
             [
                 dbc.CardBody(
                     [
                        html.H4(id='card_title_1', children=['Sales'], className='card-title'),
                        html.P(id='card_text_1', children=['Sample text.']),
                        dcc.Interval(
                             id='interval-component',
                             interval=10 * 1000,  # in milliseconds
                             n_intervals=0
                         )
                     ], style={'textAlign': 'center', 'font-family': 'Consolas'}
                 )
             ], style={'margin-top': '15px', 'margin-bottom': '15px', 'height': '30%'}
         ),

我试图在每个时间间隔更新 html.P(id='card_text_1') 元素。这是我的回调:

### SECTION - Callbacks ###
@app.callback(
    Output('card_text_1', 'children'),
    Input('interval-component', 'n_intervals'))

def update_metrics(n):
    salesYest = 'test'
    return [{}.format(salesYest)]

如果您查看 运行 应用程序所在的控制台,您将看到此错误:

AttributeError: 'dict' object has no attribute 'format'

问题出在你回调的这一部分

return [{}.format(salesYest)]

正如错误所说,字典没有属性 format

现在我不太确定你在回调中到底想做什么,但 Interval 组件本身工作正常。您可以通过将回调更改为如下内容来测试它:

@app.callback(
    Output("card_text_1", "children"), Input("interval-component", "n_intervals")
)
def update_metrics(n):
    return n

另请记住,您已将 interval 设置为 10000 毫秒。所以一定要检查 10 秒是否真的过去了,以防它似乎仍然没有做任何事情,或者在调试时降低 interval

此外,除了格式问题之外,您目前每次都返回相同的值,因此您不会注意到任何一种方式。