Adding Widgets With Button

Just keep a widget counter that increments each time the button is pressed. Then create as many widgets as the counter says.

if "num_filters" not in st.session_state:
    st.session_state["num_filters"] = 0

if st.button("Add filter"):
    st.session_state["num_filters"] += 1

for num in range(1, st.session_state["num_filters"] + 1):
    st.text_input(label=f"Filter #{num}")