我正在尝试为不同的信息集创建一个具有多个选项卡的应用程序。我的第一个想法是使用 html 按钮,但没有 dash_core_component 用于此,而且我找不到任何可以在其位置使用的文档。基本上,当我点击一个按钮(或链接)时,我想获得一个带有按钮 id 的“clicked”事件,以便我可以重绘所选页面的布局。
有没有办法用现有的组件来做到这一点?是否有关于如何创建可以连接到回调系统的新组件的文档?我觉得我一定遗漏了一些明显的东西,但经过大量搜索后我没有找到任何东西。
谢谢!
Tyl*_*ler 10
事实上,他们确实有一个可用于最新的按钮的 click 事件dash_html_components,但似乎还没有完全记录下来。创作者 chriddyp 曾表示,该Event对象可能不会面向未来,但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')])
Run Code Online (Sandbox Code Playgroud)
您可以使用值作为输入,如果它们发生变化,则无需启动回调——而是等待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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16227 次 |
| 最近记录: |