首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我正在使用Streamlit构建一个基于答案的表单,构建另一个表单,我如何隐藏表单,使它们不堆栈?

我正在使用Streamlit构建一个基于答案的表单,构建另一个表单,我如何隐藏表单,使它们不堆栈?
EN

Stack Overflow用户
提问于 2022-03-04 16:20:48
回答 2查看 1.8K关注 0票数 0

我正在用流光建造表单。我使用session_state来控制要出现的问题的哪个部分。这是第1节,但有超过10节,不是所有的部分都会被问到,这是基于你如何填写最后一节。

代码语言:javascript
复制
    if 'section' not in st.session_state:
      st.session_state['section'] = 'section 1'

    if st.session_state['section'] == 'section 1':
      with st.form(key='Scoresheet', clear_on_submit=False):
        st.markdown("""
          ### ScoreSheet
          Repeatable sheet for Grading tech tickets
          """)
        tech_name = st.text_input("Tech Name")
        date = st.date_input("Date")
        ticket_number = st.text_input("Ticket Number")
        phone_availability = st.radio("Phone Availability (Weekly)",['<10','20','30','40','50','60','70','80','90','100','N/A Leads // Special Project'])
        outage = st.radio("Large Outage",['TSP','Large Outage','Protedcted Sonet','Protected Wave','Point to Point SONET','Point to Point Wave'])
        next1 = st.form_submit_button(label='Next')

      if next1:
        st.session_state['Data1'] = {'tech_name': tech_name, 'date': date, 'ticket_number': ticket_number, 'phone_availability': phone_availability, 'outage': outage}
        if outage in ['TSP']:
          st.session_state['section'] = 'section 2'
        elif outage in ['Large Outage']:
          st.session_state['section'] = 'section 3'
        elif outage in ['Protedcted Sonet','Protected Wave']:
          st.session_state['section'] = 'section 4'
        elif outage in ['Point to Point SONET','Point to Point Wave']:
          st.session_state['section'] = 'section 5'

当您单击submit时,它会将下一节的表单呈现在现有窗体之下。每个部分都会发生这种情况,除非您单击问题单的菜单项,在该菜单项中只使用当前部分重新构建页面。

我想要它清除前一节,只是显示当前的部分。

EN

回答 2

Stack Overflow用户

发布于 2022-03-04 23:34:39

为表单使用占位符,一旦提交空它。

代码语言:javascript
复制
placeholder = st.empty()

with placeholder.form(key=str(num)):
    ...

    if st.form_submit_button():
        placeholder.empty()

检查this

票数 1
EN

Stack Overflow用户

发布于 2022-07-28 08:19:09

提示:使用st.session_state保存数据

代码示例

代码语言:javascript
复制
import streamlit as st 
from datetime import datetime

def my_callback():
    print(f"curdate: {datetime.now()} first: {st.session_state.value1} sec: {st.session_state.value2}")

with st.form('my_form',clear_on_submit=True):
    st.radio(label='‍♀️ part1:', options=[
                        '解决', '未解决', '未完全解决'], horizontal=True,
                        key='value1')

    error_list = ['答非所问', '推荐错误', '推荐不准确', '回答不详细', '信息更新不及时']
    not_saf_reason = st.radio(
        label='‍♀️ part2:', options=error_list, horizontal=True,key='value2')

    submit_button = st.form_submit_button(
                    label=' 点我提交', on_click=my_callback
                    )

st.session_state

  • save

  • part1保存到value1,这是st.session_state

part2value2中的变量,这是st.session_state

  • write中的变量,是从st.session_state

获取value1value2的回调函数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71354250

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档