You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Plotly Dash中通过按钮点击事件捕获输入框文本

修改Plotly Dash回调为按钮点击触发

要实现点击按钮才触发后台逻辑,需要做两个核心修改:添加触发按钮,调整回调的触发源与数据获取方式:

1. 布局中添加按钮组件

在输入框所在的html.Div里新增一个按钮,给它设置唯一ID以便回调识别:

app.layout = html.Div([
    html.Div(
        [
            html.H1('K7'),
            dcc.Graph(id="graph", style={'width': '100vw', 'height': '70vh'}),
        ]),
    html.Div(
        [
            dcc.Input(
                id="input_symbol",
                value="TJX",
                type="text",
                placeholder="SYMBOL",
                style={'width': '10vw', 'height': '3vh'}
            ),
            dcc.Input(
                id="input_resolution",
                value="D",
                type="text",
                placeholder="RESOLUTION",
                style={'width': '10vw', 'height': '3vh'}
            ),
            # 新增触发按钮
            html.Button('提交', id='submit_btn', style={'marginLeft': '10px'})
        ])
])

2. 调整回调逻辑

把原来输入框的Input换成按钮的n_clicks(点击次数)作为触发源,同时用State获取输入框的内容——State只会读取值但不会触发回调,只有按钮点击时才会触发:

@app.callback(
    Output("graph", "figure"),
    # 按钮点击作为触发条件
    Input('submit_btn', 'n_clicks'),
    # 用State获取输入框的值,不会触发回调
    State('input_symbol', 'value'),
    State('input_resolution', 'value'),
    # 防止应用加载时自动触发回调
    prevent_initial_call=True
)
def update_graph(n_clicks, symbol, resolution):
    # 这里替换为你的后台业务逻辑,比如根据参数生成图表
    return {
        'data': [],
        'layout': {'title': f'当前参数:{symbol} {resolution}'}
    }

关键细节

  • prevent_initial_call=True:避免应用刚加载时因初始n_clicks为None而触发回调
  • 回调函数的参数顺序必须和Input/State的定义顺序完全对应

内容的提问来源于stack exchange,提问作者John P

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 22:03:25