我有一个Streamlight表单,它接受st.inputText小部件中的用户输入.但是,每次我单击提交时,表单都会刷新,并且在实现提交逻辑之前,所有输入都会丢失.
因此,从来没有任何东西提交给我的谷歌工作表.
with st.form(key="payments"):
st.markdown(
"**Hi foo, please choose the month and year for which you are entering data**")
month, year = st.columns(2)
with month:
selected_month = st.selectbox("Month", months)
with year:
selected_year = st.selectbox("Year", years)
status, name_column, amount = st.columns(3)
name_column.markdown("_Name_")
amount.markdown("_Amount (ugx)_")
name_input = dict()
input_amounts = dict()
for name in names:
amount_key = str(fx.create_guid())
name_input[name] = amount_key
with name_column:
st.write(name)
st.write("")
with amount:
input_amounts[amount_key] = st.text_input(
placeholder="ugx", label=" ", label_visibility="collapsed", disabled=False, key=amount_key)
submitted = st.form_submit_button("Save")
if submitted:
'Open google sheet'
for k, v in name_input.items():
amount_entered = input_amounts[v]
if amount_entered.strip() != "" and int(amount_entered) > 0:
all_values = worksheet.get_all_values()
next_row_index = len(all_values) + 1
# data to insert
data = [selected_month, k, amount_entered, selected_year]
print(data)
# insert data in the next row
worksheet.append_row(
data,
value_input_option='user_entered',
insert_data_option='insert_rows',
table_range= #table_range)
但是,当我为st.inputText小部件设置一个缺省值时,插入就可以了.