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()