import tkinter as tk
from tkinter import messagebox
class ChemistryQuiz:
def __init__(self, root):
self.root = root
self.root.title("Тест з хімії: Кристалічні та аморфні речовини")
self.root.geometry("600x400")
# Дані тесту: запитання, варіанти та індекс правильної відповіді
self.questions = [
{
"question": "1. Яка основна особливість будови кристалічних речовин?",
"options": ["Хаотичне розташування частинок", "Чітка геометрична структура (решітка)", "Відсутність певної температури плавлення"],
"answer": 1
},
{
"question": "2. Оберіть приклад аморфної речовини:",
"options": ["Кухонна сіль", "Алмаз", "Скло"],
"answer": 2
},
{
"question": "3. Як змінюється температура аморфних речовин під час плавлення?",
"options": ["Залишається сталою", "Поступово зростає в певному інтервалі", "Миттєво падає"],
"answer": 1
},
{
"question": "4. Яка речовина має атомну кристалічну решітку?",
"options": ["Графіт", "Вода (лід)", "Кисень"],
"answer": 0
},
{
"question": "5. Анізотропія (залежність властивостей від напрямку) характерна для:",
"options": ["Аморфних речовин", "Рідин", "Монокристалів"],
"answer": 2
}
]
self.current_question = 0
self.score = 0
self.user_answers = [None] * len(self.questions)
self.setup_ui()
def setup_ui(self):
# Мітка запитання
self.question_label = tk.Label(self.root, text="", font=("Arial", 12, "bold"), wraplength=500, justify="left")
self.question_label.pack(pady=20)
# Варіанти відповідей (Radiobuttons)
self.var = tk.IntVar(value=-1)
self.option_buttons = []
for i in range(3):
rb = tk.Radiobutton(self.root, text="", variable=self.var, value=i, font=("Arial", 11), anchor="w")
rb.pack(fill="x", padx=50, pady=5)
self.option_buttons.append(rb)
# Кнопка підтвердження
self.next_button = tk.Button(self.root, text="Наступне питання", command=self.next_question, bg="#4CAF50", fg="white")
self.next_button.pack(pady=30)
self.display_question()
def display_question(self):
# Очищення вибору та оновлення тексту
q_data = self.questions[self.current_question]
self.question_label.config(text=q_data["question"])
for i in range(3):
self.option_buttons[i].config(text=q_data["options"][i])
self.var.set(-1)
# Якщо це останнє питання, змінюємо текст кнопки
if self.current_question == len(self.questions) - 1:
self.next_button.config(text="Завершити тест")
def next_question(self):
selected = self.var.get()
if selected == -1:
messagebox.showwarning("Увага", "Будь ласка, оберіть варіант відповіді!")
return
# Перевірка відповіді
if selected == self.questions[self.current_question]["answer"]:
self.score += 1
self.current_question += 1
if self.current_question < len(self.questions):
self.display_question()
else:
self.show_result()
def show_result(self):
result_text = f"Ви відповіли правильно на {self.score} з {len(self.questions)} запитань."
messagebox.showinfo("Результат", result_text)
self.root.destroy()
if __name__ == "__main__":
root = tk.Tk()
app = ChemistryQuiz(root)
root.mainloop()
Немає коментарів:
Дописати коментар