如何在Streamlit中结合使用st.columns与st.tabs组件
Streamlit中Tabs与Columns组件正确联用方法
你的代码存在几处语法和API用法错误,修正后就能实现每个标签页显示对应选择框的需求,具体修改点和正确代码如下:
问题点说明
st.tabs()需接收标签名称列表,解包后获取单个标签页的上下文对象,不能直接用字符串参数单独创建with块st.columns()要传入列数(整数)或宽度比例列表,返回列对象后才能通过with块使用,不能直接传入列名字符串- 代码里
["City1", "City2"-]多了一个多余的减号,属于语法错误
修正后的代码
import streamlit as st # 创建两个标签页,解包得到各自的上下文对象 tab1, tab2 = st.tabs(["Tab 1", "Tab 2"]) # 在第一个标签页内创建两列并放置组件 with tab1: col1, col2 = st.columns(2) with col1: st.selectbox("City", ["City1", "City2"]) with col2: st.selectbox("District", ["District1", "District2"]) # 在第二个标签页内创建两列并放置组件 with tab2: another_col1, another_col2 = st.columns(2) with another_col1: st.selectbox("Another City", ["Another_City1", "Another_City2"]) with another_col2: st.selectbox("Another District", ["Another_District1", "Another_District2"])
代码说明
- 先通过
st.tabs()创建所有标签页,解包后得到每个标签页的实例,后续通过with块限定组件所属的标签页 - 在每个标签页的上下文内,用
st.columns()创建所需列数,同样解包得到列实例,再将组件放到对应的列中 - 每个标签页内的组件完全独立,切换标签页时只会显示当前标签页下的内容
内容的提问来源于stack exchange,提问作者Tugrul Gokce
相关产品推荐
相关产品推荐

