Sina Media Lab commited on
Commit
bc93281
·
1 Parent(s): 7245710
Files changed (1) hide show
  1. app.py +17 -22
app.py CHANGED
@@ -23,8 +23,8 @@ if 'pdf_data' not in st.session_state:
23
  st.session_state.pdf_data = None
24
  if 'selected_answer' not in st.session_state:
25
  st.session_state.selected_answer = None
26
- if 'button_label' not in st.session_state:
27
- st.session_state.button_label = "Submit/Next"
28
 
29
  def reset_pdf_cache():
30
  st.session_state.pdf_data = None
@@ -107,10 +107,14 @@ def generate_new_question(module_name, module):
107
  def navigate_question(direction):
108
  if direction == "prev" and st.session_state.current_index > 0:
109
  st.session_state.current_index -= 1
110
- st.session_state.button_label = "Submit/Next"
111
- elif direction == "next" and st.session_state.current_index < len(st.session_state.questions) - 1:
112
- st.session_state.current_index += 1
113
- st.session_state.button_label = "Submit/Next"
 
 
 
 
114
 
115
  # Load all modules dynamically
116
  modules = load_modules()
@@ -132,7 +136,7 @@ if selected_module != st.session_state.current_module:
132
  st.session_state.module_question_count[selected_module] = 0
133
  st.session_state.module_correct_count[selected_module] = 0
134
  st.session_state.selected_answer = None
135
- st.session_state.button_label = "Submit/Next"
136
 
137
  # Load the current module's question
138
  current_question = st.session_state.questions[st.session_state.current_index]
@@ -147,7 +151,7 @@ with col1:
147
  if st.button("⬅️ Prev", disabled=st.session_state.current_index == 0):
148
  navigate_question("prev")
149
  with col2:
150
- if st.button("➡️ Next", disabled=st.session_state.current_index >= len(st.session_state.questions) - 1):
151
  navigate_question("next")
152
  with col3:
153
  if len(st.session_state.questions) > 0:
@@ -168,13 +172,14 @@ with st.form(key=f'question_form_{st.session_state.current_index}'):
168
  "Choose an answer:",
169
  options=current_question['options'],
170
  key=f"question_{st.session_state.current_index}_options",
171
- index=None # Ensure no option is pre-selected
 
172
  )
173
 
174
- submit_button = st.form_submit_button(label=st.session_state.button_label)
175
 
176
  # Handle button state and answer submission
177
- if submit_button and st.session_state.button_label == "Submit/Next":
178
  if selected_answer is not None:
179
  # Process the answer
180
  current_question['selected'] = selected_answer
@@ -186,7 +191,7 @@ if submit_button and st.session_state.button_label == "Submit/Next":
186
  st.session_state.module_correct_count[selected_module] += 1
187
 
188
  # Show correct/incorrect feedback and explanation
189
- st.session_state.button_label = "Next Question"
190
 
191
  # Show correct/incorrect feedback after submission
192
  if current_question.get('answered', False):
@@ -203,13 +208,3 @@ if current_question.get('answered', False):
203
  st.write("**Step-by-Step Solution:**")
204
  for step in current_question['step_by_step_solution']:
205
  st.write(step)
206
-
207
- # Change the button label immediately after showing the solution
208
- st.session_state.button_label = "Next Question"
209
-
210
- # This part handles switching to the next question on button click
211
- if submit_button and st.session_state.button_label == "Next Question":
212
- new_question = generate_new_question(selected_module, modules[selected_module])
213
- st.session_state.questions.append(new_question)
214
- st.session_state.current_index = len(st.session_state.questions) - 1
215
- st.session_state.button_label = "Submit/Next"
 
23
  st.session_state.pdf_data = None
24
  if 'selected_answer' not in st.session_state:
25
  st.session_state.selected_answer = None
26
+ if 'button_disabled' not in st.session_state:
27
+ st.session_state.button_disabled = False
28
 
29
  def reset_pdf_cache():
30
  st.session_state.pdf_data = None
 
107
  def navigate_question(direction):
108
  if direction == "prev" and st.session_state.current_index > 0:
109
  st.session_state.current_index -= 1
110
+ st.session_state.button_disabled = True # Disable the button when navigating to previous questions
111
+ elif direction == "next":
112
+ if st.session_state.current_index < len(st.session_state.questions) - 1:
113
+ st.session_state.current_index += 1
114
+ else:
115
+ st.session_state.questions.append(generate_new_question(st.session_state.current_module, modules[st.session_state.current_module]))
116
+ st.session_state.current_index = len(st.session_state.questions) - 1
117
+ st.session_state.button_disabled = False # Enable the button for new questions
118
 
119
  # Load all modules dynamically
120
  modules = load_modules()
 
136
  st.session_state.module_question_count[selected_module] = 0
137
  st.session_state.module_correct_count[selected_module] = 0
138
  st.session_state.selected_answer = None
139
+ st.session_state.button_disabled = False
140
 
141
  # Load the current module's question
142
  current_question = st.session_state.questions[st.session_state.current_index]
 
151
  if st.button("⬅️ Prev", disabled=st.session_state.current_index == 0):
152
  navigate_question("prev")
153
  with col2:
154
+ if st.button("➡️ Next"):
155
  navigate_question("next")
156
  with col3:
157
  if len(st.session_state.questions) > 0:
 
172
  "Choose an answer:",
173
  options=current_question['options'],
174
  key=f"question_{st.session_state.current_index}_options",
175
+ index=current_question['options'].index(current_question['selected']) if current_question['answered'] else None,
176
+ disabled=current_question['answered'] # Disable if the question has been answered
177
  )
178
 
179
+ submit_button = st.form_submit_button(label="Submit/Next", disabled=st.session_state.button_disabled)
180
 
181
  # Handle button state and answer submission
182
+ if submit_button:
183
  if selected_answer is not None:
184
  # Process the answer
185
  current_question['selected'] = selected_answer
 
191
  st.session_state.module_correct_count[selected_module] += 1
192
 
193
  # Show correct/incorrect feedback and explanation
194
+ st.session_state.button_disabled = True # Disable the button after submission
195
 
196
  # Show correct/incorrect feedback after submission
197
  if current_question.get('answered', False):
 
208
  st.write("**Step-by-Step Solution:**")
209
  for step in current_question['step_by_step_solution']:
210
  st.write(step)