|
|
@@ -1,118 +0,0 @@
|
|
|
-
|
|
|
-import tkinter as tk
|
|
|
-from tkinter import messagebox
|
|
|
-
|
|
|
-# Вопросы и варианты ответов
|
|
|
-questions = [
|
|
|
- {
|
|
|
- "question": "Какие основные требования предъявляются к обработке и хранению персональных данных?",
|
|
|
- "options": [
|
|
|
- "Сбор по согласию, законность, конфиденциальность, ограничение сроков, актуальность, меры защиты",
|
|
|
- "Только сбор без ограничений",
|
|
|
- "Обработка без согласия"
|
|
|
- ],
|
|
|
- "correct": 0 # индекс правильного варианта
|
|
|
- },
|
|
|
- {
|
|
|
- "question": "Назовите хотя бы три примера организаций, в которых используются персональные данные.",
|
|
|
- "options": [
|
|
|
- "Банки, школы, соцсети",
|
|
|
- "Автосервисы, киоски, такси",
|
|
|
- "Кинотеатры, спортзалы, кафе"
|
|
|
- ],
|
|
|
- "correct": 0
|
|
|
- },
|
|
|
- {
|
|
|
- "question": "Какие основные законы регулируют защиту персональных данных в России и ЕС?",
|
|
|
- "options": [
|
|
|
- "GDPR, ФЗ-152",
|
|
|
- "Закон о секретности",
|
|
|
- "Закон о конфиденциальности"
|
|
|
- ],
|
|
|
- "correct": 0
|
|
|
- },
|
|
|
- {
|
|
|
- "question": "Какие виды персональных данных выделяет федеральный закон №152-ФЗ?",
|
|
|
- "options": [
|
|
|
- "Общие, Особые, Биометрические",
|
|
|
- "Только общие",
|
|
|
- "Демографические и финансовые"
|
|
|
- ],
|
|
|
- "correct": 0
|
|
|
- }
|
|
|
-]
|
|
|
-
|
|
|
-class QuizApp:
|
|
|
- def __init__(self, master):
|
|
|
- self.master = master
|
|
|
- master.title("Викторина по защите персональных данных")
|
|
|
- master.geometry('700x400')
|
|
|
- self.current_question = 0
|
|
|
- self.correct_answers = 0
|
|
|
-
|
|
|
- self.label = tk.Label(master, text=f"Вопрос {self.current_question+1} из {len(questions)}", font=("Arial", 14))
|
|
|
- self.label.pack(pady=10)
|
|
|
-
|
|
|
- self.question_label = tk.Label(master, text=questions[self.current_question]['question'], font=("Arial", 12))
|
|
|
- self.question_label.pack(pady=10)
|
|
|
-
|
|
|
- self.options_var = tk.IntVar()
|
|
|
- self.options_var.set(-1) # Изначально ничего не выбрано
|
|
|
-
|
|
|
- self.radio_buttons = []
|
|
|
- for idx, option in enumerate(questions[self.current_question]['options']):
|
|
|
- rb = tk.Radiobutton(master, text=option, variable=self.options_var, value=idx, font=("Arial", 12), wraplength=650, justify='left')
|
|
|
- rb.pack(anchor='w', padx=20, pady=5)
|
|
|
- self.radio_buttons.append(rb)
|
|
|
-
|
|
|
- self.next_button = tk.Button(master, text="Ответить и перейти к следующему вопросу", command=self.check_answer)
|
|
|
- self.next_button.pack(pady=20)
|
|
|
-
|
|
|
- def check_answer(self):
|
|
|
- selected = self.options_var.get()
|
|
|
-
|
|
|
- # Проверка, выбрал ли пользователь вариант
|
|
|
- if selected == -1:
|
|
|
- messagebox.showwarning("Внимание", "Пожалуйста, выберите ответ.")
|
|
|
- return
|
|
|
-
|
|
|
- correct_idx = questions[self.current_question]['correct']
|
|
|
-
|
|
|
- # Окрашивание в зеленый или красный
|
|
|
- if selected == correct_idx:
|
|
|
- self.correct_answers += 1
|
|
|
- self.master.config(bg='green')
|
|
|
- else:
|
|
|
- self.master.config(bg='red')
|
|
|
-
|
|
|
- # После небольшой задержки восстановим фон и перейдем к следующему вопрос
|
|
|
- self.master.after(1000, self.next_question)
|
|
|
-
|
|
|
- def next_question(self):
|
|
|
- # Сброс фона
|
|
|
- self.master.config(bg='SystemButtonFace')
|
|
|
-
|
|
|
- self.current_question += 1
|
|
|
-
|
|
|
- if self.current_question < len(questions):
|
|
|
- self.update_question()
|
|
|
- else:
|
|
|
- self.show_result()
|
|
|
-
|
|
|
- def update_question(self):
|
|
|
- self.label.config(text=f"Вопрос {self.current_question+1} из {len(questions)}")
|
|
|
- self.question_label.config(text=questions[self.current_question]['question'])
|
|
|
- self.options_var.set(-1)
|
|
|
-
|
|
|
- # Обновляем варианты ответов
|
|
|
- for idx, rb in enumerate(self.radio_buttons):
|
|
|
- rb.config(text=questions[self.current_question]['options'][idx], value=idx)
|
|
|
-
|
|
|
- def show_result(self):
|
|
|
- messagebox.showinfo("Результат", f"Вы правильно ответили на {self.correct_answers} из {len(questions)} вопросов!")
|
|
|
- self.master.quit()
|
|
|
-
|
|
|
-if __name__ == "__main__":
|
|
|
- root = tk.Tk()
|
|
|
- app = QuizApp(root)
|
|
|
- root.mainloop()
|