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

如何在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"])

代码说明

  1. 先通过st.tabs()创建所有标签页,解包后得到每个标签页的实例,后续通过with块限定组件所属的标签页
  2. 在每个标签页的上下文内,用st.columns()创建所需列数,同样解包得到列实例,再将组件放到对应的列中
  3. 每个标签页内的组件完全独立,切换标签页时只会显示当前标签页下的内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 16:27:38