🎯 Just released: streamlit-adjustable-columns - Resizable columns that work exactly like st.columns!

Hey Streamlit community! :waving_hand:

I’m excited to share a new component I’ve been working on that solves a problem I personally ran into: resizable columns in Streamlit.

What it does:

  • Drop-in replacement for st.columns with the same API
  • Adds draggable resize handles between columns
  • Column widths persist across app reruns
  • Supports all existing st.columns parameters (gap, alignment, border, etc.)

Why I built it:
I was looking for a way to create resizable columns in Streamlit but couldn’t find any existing extensions that provided this functionality. Since I needed it for my own projects, I decided to build it myself and share it with the community. You know how it goes - if you can’t find it on Stack Overflow, you become the Stack Overflow answer :sweat_smile:.

Adjustable Columns Demo

Watch those columns dance! :woman_dancing:

Quick example:

import streamlit as st
from streamlit_adjustable_columns import adjustable_columns

# Works exactly like st.columns - but with resize handles!
col1, col2, col3 = adjustable_columns(3, labels=["📊 Charts", "📋 Data", "⚙️ Settings"])

with col1:
    st.metric("Sales", "$1,234", "12%")
    
col2.write("This column can be resized!")
col3.button("Settings")

No more “my columns are too wide/narrow” complaints from users! They can fix it themselves now. :relieved_face:

Installation:

pip install streamlit-adjustable-columns

One pip install away from column freedom! :dove:

The component is MIT licensed and available on PyPI. I’d love to hear your feedback and see what you build with it!

GitHub: GitHub - danieljannai/streamlit-adjustable-columns: A Streamlit custom component for creating columns with adjustable widths using draggable resize handles.
PyPI: Client Challenge

Has anyone else been wishing for resizable columns in Streamlit? What use cases do you have in mind? :thinking:

P.S. If you’re still using fixed-width columns in 2024, don’t worry - I won’t judge. But maybe it’s time to let your users have some control? :wink:

5 Likes