2017-08-09 54 views
1

我正在尝试为不同的信息集创建一个具有多个选项卡的应用程序。我的第一个想法是使用html按钮,但没有dash_core_component这个,我找不到任何我可以用在它的地方的文档。基本上,当我点击一个按钮(或链接)时,我想用按钮的ID来获得“点击”事件,这样我就可以重新绘制所选页面的布局。点击事件的基本按钮的短划线核心组件?

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

谢谢!

回答

0

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

这将是很好以更明显的方式此链接到用户指南

1

事实上,他们确实有可用于点击事件(在索引中?)最新的dash_html_components中的一个按钮,但它似乎尚未完整记录。创建者chriddyp具有statedEvent对象可能不是未来验证的,但State应该是。

使用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)