Sina Media Lab commited on
Commit
6a03105
·
1 Parent(s): 9905637
Files changed (1) hide show
  1. app.py +29 -31
app.py CHANGED
@@ -107,14 +107,10 @@ 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"
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_label = "Submit"
118
 
119
  # Load all modules dynamically
120
  modules = load_modules()
@@ -151,7 +147,7 @@ with col1:
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,33 +168,25 @@ with st.form(key=f'question_form_{st.session_state.current_index}'):
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=st.session_state.button_label)
180
 
181
  # Handle button state and answer submission
182
- if submit_button:
183
- if st.session_state.button_label == "Submit":
184
- if selected_answer is not None:
185
- # Process the answer
186
- current_question['selected'] = selected_answer
187
- current_question['answered'] = True
188
- st.session_state.module_question_count[selected_module] += 1
189
-
190
- if selected_answer == current_question['correct_answer']:
191
- st.session_state.correct_count += 1
192
- st.session_state.module_correct_count[selected_module] += 1
193
-
194
- # Show correct/incorrect feedback and explanation
195
- st.session_state.button_label = "Next"
196
-
197
- elif st.session_state.button_label == "Next":
198
- new_question = generate_new_question(selected_module, modules[selected_module])
199
- st.session_state.questions.append(new_question)
200
- st.session_state.current_index = len(st.session_state.questions) - 1
201
- st.session_state.button_label = "Submit"
202
 
203
  # Show correct/incorrect feedback after submission
204
  if current_question.get('answered', False):
@@ -215,3 +203,13 @@ if current_question.get('answered', False):
215
  st.write("**Step-by-Step Solution:**")
216
  for step in current_question['step_by_step_solution']:
217
  st.write(step)
 
 
 
 
 
 
 
 
 
 
 
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 = "Next Question"
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 = "Next Question"
 
 
 
 
114
 
115
  # Load all modules dynamically
116
  modules = load_modules()
 
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
  "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":
178
+ if selected_answer is not None:
179
+ # Process the answer
180
+ current_question['selected'] = selected_answer
181
+ current_question['answered'] = True
182
+ st.session_state.module_question_count[selected_module] += 1
183
+
184
+ if selected_answer == current_question['correct_answer']:
185
+ st.session_state.correct_count += 1
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
  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"