首页 > 解决方案 > 如何在选定的下拉值上应用 dcc 间隔

问题描述

我希望用户首先从下拉菜单中选择一个患者 ID,然后刷新所选的 ID,以便dcc.Interval在文本输出中实时获取他当前的血压(通过数据库实时)。

但是,我只能获得患者的血压,但仍然需要通过 f5 刷新它以获得新的读数压力。如何修改我的第二个回调及其相关功能?

我尝试查找那些教程,但仍然不确定如何将它们混搭起来。谢谢。

我的app.layout

app.layout = html.Div([

                html.Div([dcc.Dropdown(id='dropdown',
                                    options=[{'label': i, 'value': i} for i in x],
                                    value='x',
                                    clearable=False),
                        html.Div(id='table-container')]),

                html.Div([html.Div(id='live-update-text'),
                          dcc.Interval(id='interval-component', interval=2000, n_intervals=0)])

])

相应的回调

#First callback and its function [working as expected]
@app.callback(
    dash.dependencies.Output('dropdown', 'options'),
    [dash.dependencies.Input('dropdown', 'value')])
def get_update_db_dropdown(value):
    #connect to database and then return the results.

#Second callback and its pseudo function; I want this to be self refresh/live updating via dcc interval process
@app.callback(
    Output('live-update-text', 'children'),
    [dash.dependencies.Input('dropdown', 'value')])
def set_display_livedata(value):
    #connect to database and obtain blood pressure where id=value
    return f'selected {id} has {bloodPressure}'

标签: pythonplotlydashboardplotly-dash

解决方案


要定期触发回调,您必须将Interval组件添加为输入。因此,您的第二个回调应该是

@app.callback(
    Output('live-update-text', 'children'),
    [dash.dependencies.Input('dropdown', 'value'), dash.dependencies.Input('interval-component', 'n_intervals')])
def set_display_livedata(value, n_intervals):
    #connect to database and obtain blood pressure where id=value
    return f'selected {id} has {bloodPressure}'

推荐阅读