GSMEthesis commited on
Commit
a533144
·
verified ·
1 Parent(s): 12f1532

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +16 -18
app.py CHANGED
@@ -739,35 +739,35 @@ h3 {
739
 
740
 
741
 
742
- def likert_slider(question_data):
743
- """نمایش سوال لیکرت با اسلایدر در 7 نقطه ا 5 نقطه)"""
744
  question = question_data["question"]
745
  key = question_data["key"]
746
- points = question_data["scale"] # 7 یا 5 نقطه
747
  labels = question_data.get("labels", ["کمترین", "بیشترین"]) # لیبل‌های پیش‌فرض
748
 
749
  # مقدار پیش‌فرض (وسط طیف)
750
  default_value = st.session_state.get(key, (points + 1) // 2)
751
 
752
- # نمایش سوال و اسلایدر
753
  st.markdown(f"<p style='font-size:16px; margin-bottom:5px;'>{question}</p>", unsafe_allow_html=True)
754
 
755
- value = st.slider(
 
 
756
  "",
757
- min_value=1,
758
- max_value=points,
759
- value=default_value,
760
- step=1,
761
- key=f"slider_{key}",
762
- format="%d"
763
  )
764
 
765
  # نمایش پاسخ انتخاب‌شده
766
  st.markdown(f"<p style='text-align:center; color:#6a0dad; font-weight:bold;'>پاسخ شما: {value}</p>", unsafe_allow_html=True)
767
-
768
- # ذخیره مقادیر اسلایدر در session_state
769
  st.session_state[key] = value
770
-
771
  return value
772
 
773
 
@@ -777,7 +777,6 @@ def save_likert_answers():
777
  if "distributive" in key or "procedural" in key or "informational" in key: # انتخاب کلیدهای مربوط به سوالات
778
  st.session_state[key] = st.session_state.get(key, None)
779
 
780
-
781
  def create_ride_map():
782
  """ایجاد نقشه سفر با Folium - نسخه اصلاح شده با مناطق عمومی"""
783
  # نقاط تقریبی برای مناطق عمومی جنوب و غرب تهران
@@ -1269,7 +1268,7 @@ def random_likert_questions():
1269
 
1270
 
1271
  def random_likert_questions():
1272
- """نمایش سوالات لیکرت به ترتیب مشخص با اسلایدر سفارشی"""
1273
  # تعریف گروه‌های سوالات با لیبل‌های سفارشی
1274
  question_groups = [
1275
  {
@@ -1331,7 +1330,7 @@ def random_likert_questions():
1331
  # نمایش تمام سوالات این گروه در یک صفحه
1332
  for question in current_group['questions']:
1333
  # دریافت مقدار اسلایدر و ذخیره آن
1334
- answer = likert_slider(question)
1335
  st.session_state[question["key"]] = answer # ذخیره مقدار اسلایدر در session_state
1336
 
1337
  # دکمه ادامه/اتمام
@@ -1348,7 +1347,6 @@ def random_likert_questions():
1348
  else:
1349
  st.session_state.current_page = "explanation_questions"
1350
  st.rerun()
1351
-
1352
  def explanation_questions():
1353
  """نمایش سوالات تکمیلی به صورت مرحله‌ای با دکمه ادامه"""
1354
  st.markdown("### 📋 سوالات تکمیلی")
 
739
 
740
 
741
 
742
+ def likert_radio(question_data):
743
+ """نمایش سوال لیکرت با 7 گزینه انتخابی"""
744
  question = question_data["question"]
745
  key = question_data["key"]
746
+ points = question_data["scale"] # تعداد نقاط (7 یا 5)
747
  labels = question_data.get("labels", ["کمترین", "بیشترین"]) # لیبل‌های پیش‌فرض
748
 
749
  # مقدار پیش‌فرض (وسط طیف)
750
  default_value = st.session_state.get(key, (points + 1) // 2)
751
 
752
+ # نمایش سوال
753
  st.markdown(f"<p style='font-size:16px; margin-bottom:5px;'>{question}</p>", unsafe_allow_html=True)
754
 
755
+ # استفاده از st.radio برای نمایش گزینه‌ها
756
+ options = [str(i) for i in range(1, points+1)] # 7 گزینه از 1 تا 7
757
+ value = st.radio(
758
  "",
759
+ options=options,
760
+ index=default_value - 1, # تنظیم مقدار پیش‌فرض
761
+ key=f"radio_{key}",
762
+ format_func=lambda x: f"گزینه {x}" # نمایش گزینه‌ها به صورت "گزینه 1", "گزینه 2" و غیره
 
 
763
  )
764
 
765
  # نمایش پاسخ انتخاب‌شده
766
  st.markdown(f"<p style='text-align:center; color:#6a0dad; font-weight:bold;'>پاسخ شما: {value}</p>", unsafe_allow_html=True)
767
+
768
+ # ذخیره مقدار در session_state
769
  st.session_state[key] = value
770
+
771
  return value
772
 
773
 
 
777
  if "distributive" in key or "procedural" in key or "informational" in key: # انتخاب کلیدهای مربوط به سوالات
778
  st.session_state[key] = st.session_state.get(key, None)
779
 
 
780
  def create_ride_map():
781
  """ایجاد نقشه سفر با Folium - نسخه اصلاح شده با مناطق عمومی"""
782
  # نقاط تقریبی برای مناطق عمومی جنوب و غرب تهران
 
1268
 
1269
 
1270
  def random_likert_questions():
1271
+ """نمایش سوالات لیکرت به ترتیب مشخص با 7 گزینه انتخابی"""
1272
  # تعریف گروه‌های سوالات با لیبل‌های سفارشی
1273
  question_groups = [
1274
  {
 
1330
  # نمایش تمام سوالات این گروه در یک صفحه
1331
  for question in current_group['questions']:
1332
  # دریافت مقدار اسلایدر و ذخیره آن
1333
+ answer = likert_radio(question)
1334
  st.session_state[question["key"]] = answer # ذخیره مقدار اسلایدر در session_state
1335
 
1336
  # دکمه ادامه/اتمام
 
1347
  else:
1348
  st.session_state.current_page = "explanation_questions"
1349
  st.rerun()
 
1350
  def explanation_questions():
1351
  """نمایش سوالات تکمیلی به صورت مرحله‌ای با دکمه ادامه"""
1352
  st.markdown("### 📋 سوالات تکمیلی")