簡體   English   中英

如何在 streamlit 中制作 N 個復選框?

[英]How to make N checkboxes in streamlit?

我想制作一個剩余應用程序,用戶可以無限次制作復選框。 例如:

  1. 做硬件
  2. 閱讀這篇文章...

它基本上是一個待辦事項列表。

'''

import streamlit as st
hw = []
todo =st.text_input("Input To do list elements here")


while todo != "done":
    hw.append(todo)
    todo = st.text_input("Input To do list elements here")

for i in hw:
    checkbox=st.checkbox(i)

'''

這是我正在嘗試使用的代碼,我知道這不會讓我到達那里,但我現在只想能夠制作復選框並在 streamlit 中檢查它們但無法解決表明我無法使用的錯誤消息多個 st.text_input 的相同鍵或多次運行循環無限的其他錯誤,即使我輸入了 break 語句“完成”。

也許有不同的解決方案,我想聽聽。

你有 2 個 st.text_input(),你需要定義一個鍵,例子

todo =st.text_input("在這里輸入待辦事項列表元素", key=1)

鍵應該不同。

這是一個簡單的待辦事項應用程序,請注意復選框鍵。

代碼

"""
Todo list app
"""

import streamlit as st


st.title("Todo list app")

# 1. Create a variable to store todos.
if not 'todolist' in st.session_state:
    st.session_state.todolist = []

# 2. Prompt the user in the form
with st.form(key='form'):
    todo = st.text_input(label='Enter todo description')
    is_submit = st.form_submit_button('submit')

# 3. Store todo in todolist when submit button is hit.
if is_submit:
    st.session_state.todolist.append(todo)
    
# 4. Display the contents of todolist
with st.expander(label='List of todos', expanded=True):
    for i, todo_text in enumerate(st.session_state.todolist):
        st.checkbox(label=f'{todo_text}', key=i)

Output

在此處輸入圖像描述

看起來您認為st.text_input("Input To do list elements here")會立即要求用戶輸入。 然而,這不是它的工作原理。 相反text_input()創建了一個文本小部件,您可以將其放置在 web 頁面中供用戶輸入。 實際輸入不會立即返回。

我建議您閱讀 streamlit 文檔中的主要概念,以幫助您理解基礎知識。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM