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

Streamlit中DuplicateWidgetID问题:多个st.checkbox生成键重复报错

Streamlit待办应用DuplicateWidgetID错误解决方法

开发Streamlit待办事项应用时遇到DuplicateWidgetID错误,程序提示存在多个具有相同生成键的st.checkbox组件。

原代码

import streamlit as st
import functions

list = functions.get_list()

def add_todo():
    todo = st.session_state["new_todo"] + "\n"
    list.append(todo)
    functions.write_list(list)


st.title("Simple To-Do app")
st.subheader("This is my todo app")
st.write("Increase your productivity")

for todo in list:
    st.checkbox(todo)

st.text_input(label = "", placeholder = "Add a new todo...",
              on_change=add_todo, key = 'new_todo')

错误原因

Streamlit会根据组件的渲染结构自动分配内部唯一键,当循环生成多个结构完全一致的st.checkbox时,这些组件的内部键会重复,从而触发DuplicateWidgetID错误。

修复方案

给每个st.checkbox传递唯一的key参数,确保每个组件的键不重复。推荐使用列表索引作为key(即使待办内容重复也能保证唯一性),修改循环部分代码即可:

for index, todo in enumerate(list):
    st.checkbox(todo, key=f"todo_{index}")

如果你的待办列表中每个内容本身都是唯一的,也可以直接用待办内容作为key:

for todo in list:
    st.checkbox(todo, key=todo)

报错回溯

File "C:\Users\seraf\Desktop\Final project\web.py", line 17, in <module>
    st.checkbox(todo)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 15:20:48