1
0

цуканов12.py 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. import tkinter as tk
  2. from tkinter import messagebox
  3. # Вопросы и варианты ответов
  4. questions = [
  5. {
  6. "question": "Какие основные требования предъявляются к обработке и хранению персональных данных?",
  7. "options": [
  8. "Сбор по согласию, законность, конфиденциальность, ограничение сроков, актуальность, меры защиты",
  9. "Только сбор без ограничений",
  10. "Обработка без согласия"
  11. ],
  12. "correct": 0 # индекс правильного варианта
  13. },
  14. {
  15. "question": "Назовите хотя бы три примера организаций, в которых используются персональные данные.",
  16. "options": [
  17. "Банки, школы, соцсети",
  18. "Автосервисы, киоски, такси",
  19. "Кинотеатры, спортзалы, кафе"
  20. ],
  21. "correct": 0
  22. },
  23. {
  24. "question": "Какие основные законы регулируют защиту персональных данных в России и ЕС?",
  25. "options": [
  26. "GDPR, ФЗ-152",
  27. "Закон о секретности",
  28. "Закон о конфиденциальности"
  29. ],
  30. "correct": 0
  31. },
  32. {
  33. "question": "Какие виды персональных данных выделяет федеральный закон №152-ФЗ?",
  34. "options": [
  35. "Общие, Особые, Биометрические",
  36. "Только общие",
  37. "Демографические и финансовые"
  38. ],
  39. "correct": 0
  40. }
  41. ]
  42. class QuizApp:
  43. def __init__(self, master):
  44. self.master = master
  45. master.title("Викторина по защите персональных данных")
  46. master.geometry('700x400')
  47. self.current_question = 0
  48. self.correct_answers = 0
  49. self.label = tk.Label(master, text=f"Вопрос {self.current_question+1} из {len(questions)}", font=("Arial", 14))
  50. self.label.pack(pady=10)
  51. self.question_label = tk.Label(master, text=questions[self.current_question]['question'], font=("Arial", 12))
  52. self.question_label.pack(pady=10)
  53. self.options_var = tk.IntVar()
  54. self.options_var.set(-1) # Изначально ничего не выбрано
  55. self.radio_buttons = []
  56. for idx, option in enumerate(questions[self.current_question]['options']):
  57. rb = tk.Radiobutton(master, text=option, variable=self.options_var, value=idx, font=("Arial", 12), wraplength=650, justify='left')
  58. rb.pack(anchor='w', padx=20, pady=5)
  59. self.radio_buttons.append(rb)
  60. self.next_button = tk.Button(master, text="Ответить и перейти к следующему вопросу", command=self.check_answer)
  61. self.next_button.pack(pady=20)
  62. def check_answer(self):
  63. selected = self.options_var.get()
  64. # Проверка, выбрал ли пользователь вариант
  65. if selected == -1:
  66. messagebox.showwarning("Внимание", "Пожалуйста, выберите ответ.")
  67. return
  68. correct_idx = questions[self.current_question]['correct']
  69. # Окрашивание в зеленый или красный
  70. if selected == correct_idx:
  71. self.correct_answers += 1
  72. self.master.config(bg='green')
  73. else:
  74. self.master.config(bg='red')
  75. # После небольшой задержки восстановим фон и перейдем к следующему вопрос
  76. self.master.after(1000, self.next_question)
  77. def next_question(self):
  78. # Сброс фона
  79. self.master.config(bg='SystemButtonFace')
  80. self.current_question += 1
  81. if self.current_question < len(questions):
  82. self.update_question()
  83. else:
  84. self.show_result()
  85. def update_question(self):
  86. self.label.config(text=f"Вопрос {self.current_question+1} из {len(questions)}")
  87. self.question_label.config(text=questions[self.current_question]['question'])
  88. self.options_var.set(-1)
  89. # Обновляем варианты ответов
  90. for idx, rb in enumerate(self.radio_buttons):
  91. rb.config(text=questions[self.current_question]['options'][idx], value=idx)
  92. def show_result(self):
  93. messagebox.showinfo("Результат", f"Вы правильно ответили на {self.correct_answers} из {len(questions)} вопросов!")
  94. self.master.quit()
  95. if __name__ == "__main__":
  96. root = tk.Tk()
  97. app = QuizApp(root)
  98. root.mainloop()