How to use multiple columns in forms so that the input is side by side instead of below each

I have the following code, but the code doesn’t seem to work and its still showing one below the other

form = st.form(key="my-form")
c1, c2 = st.columns(2)
with c1:
    sel1= form.selectbox("Report Type", ("normal", "full"))
with c2:
    track= form.text_input("enter track no").upper()
submit = form.form_submit_button("Generate Report")

if submit:
    with st.spinner('Generating Report....'):

It should work. I think you need to put a statement after the st.spinner line. If you don’t have a statement, just put pass for now. See example below:

I just found this thread through Google. Can you share a screenshot of how the solution ends up looking like for you @sheneeb ? I’ve been trying to have four columns for inputs for one form and one submit button but it keeps on being displayed on top of the other like you mention in your title. Here’s my code:

form = st.form(key="Form1")
c1, c2, c3, c4 = st.columns(4)

with c1:
    initialInvestment = form.text_input("Starting capital",value=500)
with c2:
    monthlyContribution = form.text_input("Monthly contribution (Optional)",value=100)
with c3:
    annualRate = form.text_input("Annual increase rate in percentage",value="15")
with c4:
    investingTimeYears = form.text_input("Years of investing:",value=10)

submitButton = form.form_submit_button(label = 'Calculate')

And here’s how it looks:

Any idea what I’m missing here?

For anyone that is looking for the answer to my own question above, here is how I fixed it:

with st.form(key='columns_in_form'):
    c1, c2, c3, c4 = st.columns(4)
    with c1:
        initialInvestment = st.text_input("Starting capital",value=500)
    with c2:
        monthlyContribution = st.text_input("Monthly contribution (Optional)",value=100)
    with c3:
        annualRate = st.text_input("Annual increase rate in percentage",value="15")
    with c4:
        investingTimeYears = st.text_input("Duration in years:",value=10)

    submitButton = st.form_submit_button(label = 'Calculate')

This did the trick, one form with four inputs in four different columns:

1 Like

@yanissi , i was going to paste the same but you figured it out yourself :slight_smile: