Example : Reset codes in Streamlit Python.
import datetime
from datetime import date
from datetime import datetime
import streamlit as st
------------  or  ------------
from datetime import date, datetime, time
import streamlit as st

def clear():
    st.session_state.name2 = ""

    st.session_state.age2
    # st.session_state.age2 = 0
    # st.session_state.age2 = None

    st.session_state.email2 = ""
    st.session_state.dob2 = date.today()  # Reset to today’s date
    st.session_state.examtime2 = datetime.now()  # Reset to current time
    #st.session_state.examtime2 = time(0, 0)

    # st.session_state.gender2 = None
    st.session_state.gender2 = "Male"

    st.session_state.passwd2 = ""
    st.session_state.addr2 = ""
    st.session_state["nat2"] = "Select One"
    # st.session_state["matric2"] = True
    st.session_state["matric2"] = False
    st.session_state["inter2"] = False
    st.session_state["grad2"] = False
    st.session_state.rem2 = "N/A"


# Streamlit UI Form design codes
st.title("User Registration Form")
with st.form("form1"):
    name1 = st.text_input("Enter Your Name", max_chars=30, key="name2")

    # age1 = st.number_input("Enter Your Age", min_value=18, key="age2")
    # age1 = st.number_input("Enter Your Age", key="age2")
    age1 = st.number_input("Enter Your Age", value=0, key="age2")

    email1 = st.text_input("Enter Your Email", key="email2")
    gender1 = st.radio("Select Your Gender", ["Male", "Female", "Transgender"], key="gender2")
    passwd1 = st.text_input('Enter Password', type="password", key="passwd2")
    addr1 = st.text_area('Enter Your Address', height=150, key="addr2")

    dob1 = st.date_input("Choose Your Birth Date", key="dob2", value=date.today())
    # dob1 = st.date_input("Choose your Date of Birth", key="dob2")
    # dob3 = dob1.strftime("%d-%m-%Y") # Format date as DD-MM-YYYY
    # dob3 = dob1.strftime("%d-%b-%Y") # Format date as DD-MMM-YYYY

    examtime1 = st.time_input("Choose Your Entry Time", key="examtime2", value=datetime.now())

    #display time in textbox
    val1 = datetime.now()
    default_time = val1.strftime("%H:%M:%S")
    exam_time = st.text_input("Examination Start Time", value=default_time)

    nat1 = st.selectbox("Select Your Nationality", ('Select One', 'India', 'USA', 'Nepal', 'Bhutan', 'Sri Lanka'),key="nat2")

    st.write("Choose Your Qualification")
    matric1 = st.checkbox("Matric", key="matric2")
    inter1 = st.checkbox("Intermediate", key="inter2")
    grad1 = st.checkbox("Graduation", key="grad2")

    rem1 = st.text_input("Enter Your Remarks, if any", value="N/A", key="rem2")

    # To set buttons in one row(by default vertical)
    col1, col2, col3, col4, col5 = st.columns(5)
    with col1:
        submit1 = st.form_submit_button("Submit")
    with col2:
        if st.form_submit_button("Reset", on_click=clear):
            st.rerun()  # Refresh UI to reset values
    with col3:
        delete1 = st.form_submit_button("Delete")
    with col4:
        update1 = st.form_submit_button("Update")
    with col5:
        exit1 = st.form_submit_button("Exit")
Example : Another Reset & Save code in Streamlit Python.
import os
from datetime import date
from sqlalchemy import create_engine, text
import streamlit as st

# --- Database Connection ---
# Connect to the MySQL database using SQLAlchemy with pymysql driver.
engine = create_engine("mysql+pymysql://root:@localhost/Ecms")
# Optional: Display a message on successful connection
# st.success("Database Connected Successfully")

# --- Session Flag Setup for Reset ---
# Initialize a reset flag in session state (used to reset form fields).
if "reset_flag" not in st.session_state:
    st.session_state.reset_flag = False

# --- Handle Reset Before Widgets Are Rendered ---
# If reset is triggered, clear all form-related session state values.
if st.session_state.reset_flag:

    #st.session_state["custslno2"] = 1
    st.session_state["custslno2"] = ""
    st.session_state["custdob2"] = date.today()
    st.session_state["custname2"] = ""
    st.session_state["custfn2"] = ""
    st.session_state["custadr2"] = ""
    st.session_state["custmno2"] = 0
    st.session_state["custemailid2"] = ""
    st.session_state["custgender2"] = "Male"

    #st.session_state["matric"] = False
    #st.session_state["inter"] = False
    #st.session_state["grad"] = False

    st.session_state["custage2"] = 0
    st.session_state["custOccupation2"] = ""
    st.session_state["custremarks2"] = ""
    #st.session_state["remark"] = "N/A"

    st.session_state.reset_flag = False  # Reset the flag after clearing

# --- Streamlit Form UI ---
st.title("Customer Details")  # Title of the app

# Create a form to enter customer details
with st.form("form1"):
    # Input fields with keys linked to session state
    custslno1 = st.text_input("Serial Number", key="custslno2")
    custdob1 = st.date_input("Date", key="custdob2", value=date.today())
    custname1 = st.text_input("Name", max_chars=30, key="custname2")
    custfn1 = st.text_input("Father Name", max_chars=30, key="custfn2")
    custadr1 = st.text_area("Address", max_chars=30, key="custadr2")
    custmno1 = st.number_input("Mobile Number", key="custmno2", min_value=0, max_value=9999999999, value=0)
    custemailid1 = st.text_input("Email Id", max_chars=30, key="custemailid2")
    custgender1 = st.radio("Select Your Gender", ["Male", "Female", "Transgender"], key="custgender2")
    custage1 = st.number_input("Age", key="custage2", value=0)
    custOccupation1 = st.text_input("Occupation", key="custOccupation2")
    custremarks1 = st.text_input("Remarks", key="custremarks2")

    # Layout for form buttons in 5 columns
    col1, col2, col3, col4, col5 = st.columns(5)

    # --- Submit Button ---
    with col1:
        if st.form_submit_button("Submit"):
            # Prepare SQL query for inserting customer data
            query = text("""
                INSERT INTO customer (
                    custslno5, custdob5, custname5, custfn5, custadr5, custmno5,
                    custemailid5, custgender5, custage5, custoccupation5, remarks5
                ) VALUES (
                    :custslno, :custdob, :custname, :custfn, :custadr, :custmno,
                    :custemailid, :custgender, :custage, :custOccupation, :custremarks
                )
            """)

            # Bind form input values to query parameters
            params = {
                "custslno": custslno1,
                "custdob": str(custdob1),
                "custname": custname1,
                "custfn": custfn1,
                "custadr": custadr1,
                "custmno": custmno1,
                "custemailid": custemailid1,
                "custgender": custgender1,
                "custage": custage1,
                "custOccupation": custOccupation1,
                "custremarks": custremarks1
            }

            # Try inserting data into the database
            try:
                with engine.connect() as conn:
                    conn.execute(query, params)
                    conn.commit()
                # After successful insert, trigger form reset and rerun
                st.session_state.reset_flag = True
                st.rerun()
                st.success("✅ Data inserted successfully!")

            except Exception as e:
                # Show error if insertion fails
                st.error(f"❌ Error inserting data: {e}")

    # --- Reset Button ---
    with col2:
        if st.form_submit_button("Reset"):
            # Set reset flag and rerun app to clear inputs
            st.session_state.reset_flag = True
            st.rerun()
        ----------  OR  ------------
        #if st.form_submit_button("Reset", on_click=lambda: st.session_state.update({"reset_flag": True})):
            #st.success("✅ Form Reset Successfully!")

    # --- Exit Button ---
    with col3:
        if st.form_submit_button("Exit"):
            # Exit the app (force stop)
            st.write("Closing the app...")
            os._exit(0)

    # --- Update Placeholder ---
    with col4:
        update1 = st.form_submit_button("Update")
        # You can implement update functionality here in the future

    # --- Delete Placeholder ---
    with col5:
        delete1 = st.form_submit_button("Delete")
        # You can implement delete functionality here in the future

Loading

Categories: Streamlit

0 Comments

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.