In Streamlit 1.20 st.number_input is not displaying the label string even after explicitly setting label_visibility=“visible”
Hi @bhawmik,
Thanks for posting! Can you share a code example or a screenshot to show what you’re seeing?
Variable = st.number_input(concept_str,min_value=0.0,max_value=1.0,value=Variable,key=i,label_visibility=“visible”)
Only the number input box is displayed. Label is not displayed.
For now I used a workaround my printing the label before the input box, and setting the number_input to collapsed.
To show you a screen shot I need to revert back. Can do only if you really need it.
Yes, that would be great for troubleshooting. I ran this on my end and it’s working;
import streamlit as st
number = st.number_input(label='Insert a number', label_visibility="visible")
st.write('The current number is ', number)
This is with collapsed
:
import streamlit as st
number = st.number_input(label='Insert a number', label_visibility="collapsed")
st.write('The current number is ', number)
Attached is the screen shot.
st.session_state.concepts_df.loc[i, ‘Weight’] = st.number_input(label=concept_str,min_value=0.0,max_value=1.0,value=st.session_state.concepts_df.loc[i, ‘Weight’],key=i,label_visibility=“visible”)
It used to work fine in earlier versions.
I am running on MacOs.
So if you revert to an older version it works? Are you currently using v1.20?
Ran this example on MacOS:
import streamlit as st
import pandas as pd
st.title('Change weight as per relative importance')
# Sample DF with concepts and their corresponding weights
concepts_df = pd.DataFrame({
'Concept': ['Concept A', 'Concept B', 'Concept C', 'Concept D'],
'Weight': [0.35, 0.09, 0.09, 0.04]
})
# Initialize session state
if 'concepts_df' not in st.session_state:
st.session_state.concepts_df = concepts_df
# Display and update the weights for each concept
for i, concept_str in enumerate(st.session_state.concepts_df['Concept']):
st.session_state.concepts_df.loc[i, 'Weight'] = st.number_input(
label=concept_str,
min_value=0.0,
max_value=1.0,
value=st.session_state.concepts_df.loc[i, 'Weight'],
key=i,
label_visibility="visible"
)
Output:
Are you okay with sharing a screen recording or your full code?
Looks like exactly the code I have. Unfortunately I cannot share the full code. But here is the relevant segment.
st.subheader("Change weight as per relative importance." )
for i in range(st.session_state.concepts_df.shape[0]):
concept_str = ", ".join(st.session_state.concepts_df.loc[i,'Concept'])
concept_str =str(i)+". "+concept_str
weight_str = str(np.round(st.session_state.concepts_df.loc[i, 'Weight'],3))
st.session_state.concepts_df.loc[i, 'Weight'] st.number_input(concept_str,min_value=0.0,max_value=1.0,value=st.session_state.concepts_df.loc[i, 'Weight'],key=i)
Can you try running the example I gave you above on a separate file to see if it works? Also, is the app deployed to cloud or are you working locally?
Your sample code works fine.
I am running my code locally. NOt deployed to the cloud yet.
I tried plugging your code in my app. It doesn’t work then.
Something is turning off the “visibility” flag.
Here is a minimal example:
st.text_input(label="1. xx")
I guess the label is being parsed as a numbered list item and that fails when rendered as a widget label.
Some alternatives that do work:
st.text_input(label="1. xx")
st.text_input(label="1 . xx")
st.text_input(label="1.xx")
st.text_input(label="1: xx")
st.text_input(label="`1. `")
This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.