Insert multiple input text box programmatically

import streamlit as st

noOfMeetings = st.number_input(‘Select the number of meetings:’,step=1)
meetingDetails = {}
if st.button(“Submit Button”):
for i in range(int(noOfMeetings)):
meetingDetails[“meeting”+str(i)]=""
else:
noOfMeetings = 0

for k, v in meetingDetails.items():
meetingDetails[k] = st.text_input(k, v)
st.write(meetingDetails[k])

Hi, In this code I want to input the number of meetings and create as many input boxes according to that.
When I run this piece of code, the appeared textboxes disappear after entering any text.
Please help me with this

you defined a dictionary to save information.
but the dictionary has no content because your code is: “meetingDetails[“meeting”+str(i)]=”" "
so st.write will not print any content.

1 Like

It is fine if it doesn’t print anything, but why do the textboxes that have been added programmatically disappear on typing text. That is my main query here

Hi,
Solution one.
Streamlit runs the codes every time you interact with the widget. Button value will be True if you click and automatically changes its value to False upon interacting with the text widget.
Replace the button widget with the checkbox.

Solution two.
If you want to keep button widget, use st.empty place holder in the first for loop. Then replace with text input in the next loop

Solution Three
Use sessionstate,

1 Like