Spaces:
Sleeping
Sleeping
import streamlit as st | |
class FormHelper: | |
def __init__(self): | |
"""Initializes the FormHelper with default session state values.""" | |
if "exam_loaded" not in st.session_state: | |
st.session_state.exam_loaded = False | |
if "exam_started" not in st.session_state: | |
st.session_state.exam_started = False | |
if "current_form" not in st.session_state: | |
st.session_state.current_form = "about" | |
def show_about_page(self): | |
"""Displays the About page.""" | |
st.title("About This App") | |
st.write("This is a dummy app for demonstrating form management in Streamlit.") | |
def show_load_exam_page(self): | |
"""Displays the Load Exam page and handles exam loading.""" | |
st.title("Load Exam") | |
st.write("Simulating exam loading...") | |
if st.button("Exam Loaded"): | |
st.session_state.exam_loaded = True | |
st.session_state.current_form = "take_exam" | |
st.rerun() | |
def show_take_exam_page(self): | |
"""Displays the Take Exam page with dummy questions and handles exam finishing.""" | |
st.title("Take Exam") | |
st.session_state.exam_started = True | |
st.write("Displaying exam questions here...") | |
for i in range(5): | |
st.write(f"Question {i+1}: What is the capital of France?") | |
st.radio(f"Select answer for question {i+1}", ("Berlin", "Paris", "Madrid", "Rome")) | |
if st.button("Finish Exam"): | |
st.session_state.exam_started = False | |
st.session_state.current_form = "view_result" | |
st.rerun() | |
if st.button("End Exam Early"): | |
st.session_state.exam_started = False | |
st.session_state.current_form = "view_result" | |
st.rerun() | |
def show_view_result_page(self): | |
"""Displays the View Result page with dummy results and handles exam retake/reload.""" | |
st.title("View Result") | |
st.write("Displaying exam results here...") | |
st.write("You answered 3 out of 5 questions correctly.") | |
if st.button("Retake Exam"): | |
st.session_state.current_form = "take_exam" | |
st.rerun() | |
if st.button("Load Another Exam"): | |
st.session_state.exam_loaded = False | |
st.session_state.current_form = "load_exam" | |
st.rerun() | |
def show_sidebar(self): | |
"""Displays the sidebar with navigation buttons.""" | |
with st.sidebar: | |
st.title("Navigation") | |
if st.button("About"): | |
st.session_state.current_form = "about" | |
st.rerun() | |
if not st.session_state.exam_started: | |
if st.button("Load Exam"): | |
st.session_state.current_form = "load_exam" | |
st.rerun() | |
if st.session_state.exam_loaded and st.session_state.exam_started: | |
if st.button("Take Exam"): | |
st.session_state.current_form = "take_exam" | |
st.rerun() | |
if "current_form" in st.session_state and st.session_state.current_form == "view_result": | |
if st.button("View Result"): | |
st.session_state.current_form = "view_result" | |
st.rerun() | |
def run(self): | |
"""Runs the app by displaying the appropriate page based on the current form.""" | |
self.show_sidebar() | |
if st.session_state.current_form == "about": | |
self.show_about_page() | |
elif st.session_state.current_form == "load_exam": | |
self.show_load_exam_page() | |
elif st.session_state.current_form == "take_exam": | |
self.show_take_exam_page() | |
elif st.session_state.current_form == "view_result": | |
self.show_view_result_page() |