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.
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.