我有一个关于 DuplicateWidgetID 的问题。当程序运行时,它说有多个相同的 st.checkbox 小部件具有相同的生成密钥

问题描述 投票:0回答:2
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')

创建小部件时,会根据其结构为其分配一个内部键。具有相同结构的多个小部件将导致相同的内部密钥,从而导致此错误。

要修复此错误,请将唯一的

key
参数传递给
st.checkbox

追溯:

File "C:\Users\seraf\Desktop\Final project\web.py", line 17, in <module>
    st.checkbox(todo)
python session-state streamlit pysimplegui
2个回答
1
投票

发生这种情况是因为您尝试生成多个具有相同键值(

none
)的复选框。为了解决这个问题,每个新复选框都应该有一个唯一的键值。
示例:
分配一个带有增量的变量并将其设置为键。
在下面的代码中,
unique_value
的值始终会增加,这将使每个新的复选框键与其余复选框的延迟不同。

unique_value = 0
for todo in list:
    unique_value += 1
    st.checkbox(todo, key=f"todo{unique_value}")
        

0
投票

DuplicateWidgetID:有多个相同的 st.text_input 小部件具有相同的生成密钥。

创建小部件时,会根据其结构为其分配一个内部键。具有相同结构的多个小部件将导致相同的内部密钥,从而导致此错误。

要修复此错误,请将唯一的键参数传递给 st.text_input。

回溯: 文件“C:\Users\jay\Downloads\Face-News-Detection-Machine-Learning-main\Face-News-Detection-Machine-Learning-main pp.py”,第 66 行,位于 input_text = st.text_input('输入新闻文章') ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

我也遇到同样的问题,请大家帮帮我

© www.soinside.com 2019 - 2024. All rights reserved.