使用点击事件对基本按钮的虚拟核心组件?

时间:2017-08-09 00:25:39

标签: plotly-dash

我正在尝试为不同的信息集创建一个包含多个标签的应用。我的第一个想法是使用html Buttons但是没有dash_core_component,我找不到任何我可以使用的文档。基本上,当我点击一个按钮(或链接)时,我想要一个带有按钮ID的“点击”事件,这样我就可以重新绘制所选页面的布局。

有没有办法用现有的组件做到这一点?是否有关于如何创建可连接到回调系统的新组件的文档?我觉得我必须遗漏一些明显的东西,但经过大量的搜索后我找不到任何东西。

谢谢!

2 个答案:

答案 0 :(得分:3)

事实上,他们确实有一个点击事件可用于最新dash_html_components中的按钮,但它似乎还没有完整记录。创建者chriddyp stated Event对象可能无法面向未来,但State应该是。{/ p>

使用State之类的:

@app.callback(
    Output('output', 'children'),
    [Input('button-2', 'n_clicks')],
    state=[State('input-1', 'value'),
     State('input-2', 'value'),
     State('slider-1', 'value')])

你可以使用值作为输入,如果它们发生变化则不会启动回调 - 而是等待Input('button', 'n_clicks')触发回调。

从链接中复制以下完整代码示例:

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

app = dash.Dash()

app.layout = html.Div([
    html.Button('Click Me', id='button'),
    html.H3(id='button-clicks'),

    html.Hr(),

    html.Label('Input 1'),
    dcc.Input(id='input-1'),

    html.Label('Input 2'),
    dcc.Input(id='input-2'),

    html.Label('Slider 1'),
    dcc.Slider(id='slider-1'),

    html.Button(id='button-2'),

    html.Div(id='output')
])

@app.callback(
    Output('button-clicks', 'children'),
    [Input('button', 'n_clicks')])
def clicks(n_clicks):
    return 'Button has been clicked {} times'.format(n_clicks)

@app.callback(
    Output('output', 'children'),
    [Input('button-2', 'n_clicks')],
    state=[State('input-1', 'value'),
     State('input-2', 'value'),
     State('slider-1', 'value')])
def compute(n_clicks, input1, input2, slider1):
    return 'A computation based off of {}, {}, and {}'.format(
        input1, input2, slider1
    )

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

答案 1 :(得分:0)

啊哈!终于找到了答案,记录在这里:https://plot.ly/dash/urls

以更明显的方式(在索引中?)

将其链接到用户指南会很好