I am using a button with on_click
calling a function. That function is quite large, and I want to refactor it, but that would mean needing multiple on_click
calls, to run in sequence.
Is there any way to do this? Thanks
I am using a button with on_click
calling a function. That function is quite large, and I want to refactor it, but that would mean needing multiple on_click
calls, to run in sequence.
Is there any way to do this? Thanks
You can call on_click
multiple times in sequence by clicking the button multiple times but I donโt think that is what you want.
A common approach to refactor a too large function is extracting other functions. That way the function looks the same from the outside but its body becomes shorter and (hopefully) more readable.
@altanner The method @Goyo suggests is exactly right. Hereโs a concrete example of what that could look like in your app
import streamlit as st
def callback1():
st.write("Callback 1")
def callback2():
st.write("Callback 2")
def callback3():
st.write("Callback 3")
def master_callback():
callback1()
callback2()
callback3()
st.button("Run callbacks", on_click=master_callback)
OK cool, I had suspected this: thanks for confirming that that approach isnโt too crazy!
Just need to figure out what is worth chopping up or not