Updating Charts with a Function - st.rerun

Hi, everyone!

I’m working on a project that allows the user to input data and update charts based on it.

Because the charts take some time to update, I chose to do it through a button, which calls a function that updates da charts.

Problem is that when the user clicks the button, the charts are updated, but not plotted on screen. As a turnaround, at the end of a the fuction I put ‘st.rerun’ so that the updated charts are plotted.

When I was using ‘st.rerun_experimental’ it did work fine, but now with ‘st.rerun’ I’m getting an infinite loop.

I’ve seen a discussion about it:

One of the solution presented was to set a key to the button and then simply delete it at the end of the function. However, I getting the following error:

StreamlitAPIException : Values for st.button, st.download_button, st.file_uploader, st.data_editor, st.chat_input, and st.form cannot be set using st.session_state.

Any idea on how to solve this kind of situation?

Thanks in advance!

Hi @heitormarcal

It would be great if you could post a minimal piece of code to help you troubleshoot.



The behaviour of st.rerun appears to have changed in version 1.28.1 fixing the endless looping reruns behind a button problem in the previous question you linked. Try upgrading to the new version.

In general, I avoid using st.rerun where there’s another solution (the st.rerun docs also gently discourage its use). Placing the widgets within an st.form or the slow code behind an st.checkbox is often a cleaner solution.

Good morning, jcadams!

Thanks for the reply. I’ve upgrated to the newest version and it has, indeed, corrected the endless loop.

@CarlosSerrano, thank you for the attention as well!

This topic was automatically closed 2 days after the last reply. New replies are no longer allowed.