如何让Dash Callback仅响应DataTable第一列单元格点击以打开模态框
修改方案
要实现仅点击第一列单元格才触发模态框,核心是判断active_cell的列索引是否为0(Dash中列索引从0开始计数),具体修改如下:
@app.callback(Output('modal', 'is_open'), [Input('Data_Table', 'active_cell'), Input('close', 'n_clicks')], [State("modal", "is_open")]) def toggle_modal(n1, n2, is_open): # 点击第一列单元格,或者点击关闭按钮时切换模态框状态 if (n1 is not None and n1['column_index'] == 0) or n2: return not is_open return is_open
关键修改说明:
- 新增对
n1(即active_cell对象)的双重判断:先确认n1不为空(避免初始加载时的空值报错),再检查column_index是否等于0(对应第一列) - 只有点击第一列单元格,或是点击关闭按钮时,才会切换模态框的显示状态;点击其他列单元格不会触发任何变化
- 关闭按钮的原有逻辑保持不变,确保正常关闭模态框
内容的提问来源于stack exchange,提问作者Prmake
相关产品推荐
相关产品推荐

