The width parameter for st.column_config.TextColumn accepts âsmallâ, âmediumâ and âlargeâ as argument values. (See the Docs page for more details st.column_config.TextColumn - Streamlit Docs)
As for text wrapping in columns, can you see this relevant forum post for more details:
width parameter changes the width and doesnât wrap the text in a readable format.
this post is suggesting to use st.table, which doesnât have column config.
I have multiple columns, one is long text and other is a score, where i use ProgressColumn, renaming, tooltip, etc
Is there a better way to do this using st.dataframe and column_config instead. Like using some python wrap function on text columns before passing to streamlit st.dataframe?
st.dataframe(df[['query_summary','sim_score']],
column_config={
'query_summary':st.column_config.TextColumn("Summary", width="medium", help="Natural Language Question relevant to entered question"),
'sim_score':st.column_config.ProgressColumn("Score", width=90, format="%.2f%%",min_value=0,max_value=100, help="Similarity score"),
})
Hi, I created a method to fix this issue as I was facing wrap text issue in streamlit for pie charts and sunburst charts where the text was so small due to the length that it was unreadable. This method gives the result same as textwrap.text which doesnât works in streamlit
def wrap_text(sentences, width):
ââ"
This function takes a list of sentences and a width and returns a list of lists,
where each inner list contains the wrapped lines for the corresponding sentence.
Args:
sentences: A list of strings, where each string is a sentence.
width: An integer representing the maximum character width per line.
Returns:
A list of lists, where each inner list contains wrapped lines for a sentence.
ââ"
wrapped_sentences =
for sentence in sentences:
# Split the sentence on word boundaries (ensures no mid-word breaks)
words = re.findall(r"\b\w+\b", sentence)
lines =
current_line =
for word in words:
# Check if adding the word exceeds the line width
if len(" â.join(current_line + [word])) <= width:
current_line.append(word)
else:
# Add the current line and start a new one
lines.append(â â.join(current_line))
current_line = [word]
# Add the last line (if any)
if current_line:
lines.append(â â.join(current_line))
wrapped_sentences.append(â<>br".join(lines))
return wrapped_sentences
please correct <>br to < br > and remove spaces in the above .join(lines) when using the code as this html tag is not visible in the reply if I put it in the above code
Hi. Iâm sorta new to posting on forums and not sure the etiquette about how to post and link and stuff but came up with sorta a solution to this I shared here:
Hi @dataprofessor - is there a plan to handle wrapping long text on the product roadmap? Also, would there be any other suggestions you might have identified lately to resolve this?
Thanks for stopping by! We use cookies to help us understand how you interact with our website.
By clicking âAccept allâ, you consent to our use of cookies. For more information, please see our privacy policy.
Cookie settings
Strictly necessary cookies
These cookies are necessary for the website to function and cannot be switched off. They are usually only set in response to actions made by you which amount to a request for services, such as setting your privacy preferences, logging in or filling in forms.
Performance cookies
These cookies allow us to count visits and traffic sources so we can measure and improve the performance of our site. They help us understand how visitors move around the site and which pages are most frequently visited.
Functional cookies
These cookies are used to record your choices and settings, maintain your preferences over time and recognize you when you return to our website. These cookies help us to personalize our content for you and remember your preferences.
Targeting cookies
These cookies may be deployed to our site by our advertising partners to build a profile of your interest and provide you with content that is relevant to you, including showing you relevant ads on other websites.