Skip to main content

Best ABC Learner for kids (Python Script)


Best ABC Learner for kids (Python Script)





This is the best ABC Learner (Python Script) it Includes Learning, Test, Matching etc. 



Script:

import tkinter as tk
from tkinter import messagebox
import random
import winsound  # For sound playback

# Alphabet list
alphabet = list("ABCDEFGHIJKLMNOPQRSTUVWXYZ")

# Function to return to the main menu
def return_to_main_menu(window):
    window.destroy()
    root.deiconify()

# Function for ABC Learner
def start_abc_learner():
    root.withdraw()
    learner_window = tk.Toplevel(root)
    learner_window.title("ABC Learner")
    learner_window.geometry("800x600")
    learner_window.configure(bg="#FFCCCC")

    def play_sound(letter):
        try:
            winsound.PlaySound(f"sounds/{letter}.wav", winsound.SND_FILENAME | winsound.SND_ASYNC)
        except Exception as e:
            print(f"Sound error for '{letter}': {e}")

    def show_next_letter():
        global current_index
        if current_index < len(alphabet):
            label_var.set(alphabet[current_index])
            current_color = random.choice(["#FFCCCC", "#FFCC99", "#FFFF99", "#CCFFCC", "#CCCCFF", "#FFCCFF"])
            learner_window.config(bg=current_color)
            play_sound(alphabet[current_index])
        else:
            messagebox.showinfo("Congratulations!", "You've completed the ABCs!")
            return_to_main_menu(learner_window)

    def check_letter(event):
        global current_index
        pressed_key = event.char.upper()
        if pressed_key == alphabet[current_index]:
            current_index += 1
            show_next_letter()
        else:
            messagebox.showwarning("Try Again!", f"Press '{alphabet[current_index]}' to continue.")

    learner_window.bind('<Escape>', lambda event: return_to_main_menu(learner_window))

    global current_index
    current_index = 0

    label_var = tk.StringVar()
    label_var.set(alphabet[0])

    letter_label = tk.Label(learner_window, textvariable=label_var, font=("Arial", 200, "bold"), bg="#FFCCCC", fg="#333333")
    letter_label.pack(pady=50)

    instruction_label = tk.Label(learner_window, text="Press the matching key on your keyboard!", font=("Arial", 20), bg="#FFCCCC", fg="#333333")
    instruction_label.pack(pady=20)

    main_menu_button = tk.Button(learner_window, text="Main Menu", font=("Arial", 16), bg="#4CAF50", fg="white", command=lambda: return_to_main_menu(learner_window), padx=10, pady=10)
    main_menu_button.pack(pady=20)

    learner_window.bind('<KeyPress>', check_letter)
    show_next_letter()

# Function for ABC Test
def start_abc_test():
    root.withdraw()
    test_window = tk.Toplevel(root)
    test_window.title("ABC Test")
    test_window.geometry("800x600")
    test_window.configure(bg="#FBE7C6")

    def next_letter():
        global current_letter
        current_letter = random.choice(alphabet)
        letter_var.set(current_letter)
        start_timer()

    def start_timer():
        global time_left, timer
        time_left = 10
        timer_label_var.set(f"Time Left: {time_left} seconds")
        timer = test_window.after(1000, countdown)

    def countdown():
        global time_left, timer
        if time_left > 0:
            time_left -= 1
            timer_label_var.set(f"Time Left: {time_left} seconds")
            timer = test_window.after(1000, countdown)
        else:
            messagebox.showinfo("Test Over", "You Failed!")
            return_to_main_menu(test_window)

    def check_input(event):
        global timer
        user_input = event.char.upper()
        if user_input == current_letter:
            test_window.after_cancel(timer)  # Stop the timer if correct input
            next_letter()  # Move to the next letter
        else:
            messagebox.showwarning("Incorrect!", "Try again!")

    # Bind the <KeyPress> event
    test_window.bind('<KeyPress>', check_input)

    # Set focus on the test window
    test_window.focus_force()

    global current_letter, time_left
    time_left = 10

    letter_var = tk.StringVar()
    letter_var.set("")

    letter_label = tk.Label(test_window, textvariable=letter_var, font=("Arial", 150, "bold"), bg="#FBE7C6", fg="#333333")
    letter_label.pack(pady=50)

    timer_label_var = tk.StringVar()
    timer_label_var.set(f"Time Left: {time_left} seconds")

    timer_label = tk.Label(test_window, textvariable=timer_label_var, font=("Arial", 24), bg="#FBE7C6", fg="#333333")
    timer_label.pack(pady=20)

    instructions_label = tk.Label(test_window, text="Press the key corresponding to the letter shown!", font=("Arial", 16), bg="#FBE7C6", fg="#333333")
    instructions_label.pack(pady=10)

    main_menu_button = tk.Button(test_window, text="Main Menu", font=("Arial", 16), bg="#4CAF50", fg="white", command=lambda: return_to_main_menu(test_window), padx=10, pady=10)
    main_menu_button.pack(pady=20)

    next_letter()

# Function for ABC Matching
def start_abc_matching():
    root.withdraw()
    matching_window = tk.Toplevel(root)
    matching_window.title("ABC Matching")
    matching_window.geometry("800x600")
    matching_window.configure(bg="#E6E6FA")

    def play_sound(letter):
        try:
            winsound.PlaySound(f"sounds/{letter}.wav", winsound.SND_FILENAME | winsound.SND_ASYNC)
        except Exception as e:
            print(f"Sound error for '{letter}': {e}")

    def show_new_letters():
        global target_letter, letter_buttons
        target_letter = random.choice(alphabet)
        play_sound(target_letter)

        for button in letter_buttons:
            button.destroy()
        letter_buttons.clear()

        displayed_letters = random.sample(alphabet, 6)
        if target_letter not in displayed_letters:
            displayed_letters[random.randint(0, 5)] = target_letter

        for letter in displayed_letters:
            button = tk.Button(
                matching_window, text=letter, font=("Arial", 40), bg="#4CAF50", fg="white",
                command=lambda l=letter: check_letter(l)
            )
            button.pack(pady=10, padx=10, side="left", expand=True)
            letter_buttons.append(button)

    def check_letter(selected_letter):
        if selected_letter == target_letter:
            messagebox.showinfo("Correct!", "You got it! Well done!")
            show_new_letters()
        else:
            messagebox.showwarning("Incorrect!", f"The correct letter was '{target_letter}'!")
            show_new_letters()

    matching_window.bind('<Escape>', lambda event: return_to_main_menu(matching_window))

    global letter_buttons
    letter_buttons = []
    target_letter = None

    instructions_label = tk.Label(matching_window, text="Listen to the sound and click the matching letter!", font=("Arial", 20), bg="#E6E6FA", fg="#333333")
    instructions_label.pack(pady=20)

    main_menu_button = tk.Button(
        matching_window, text="Main Menu", font=("Arial", 16), bg="#FFC300", fg="white",
        command=lambda: return_to_main_menu(matching_window), padx=10, pady=10
    )
    main_menu_button.pack(pady=20)

    show_new_letters()

# Main Menu Layout
root = tk.Tk()
root.title("ABC Learning App")
root.geometry("800x600")
root.configure(bg="#f0f0f0")

title_label = tk.Label(root, text="Welcome to ABC Learning App", font=("Helvetica", 24, "bold"), bg="#f0f0f0", fg="#333333")
title_label.pack(pady=30)

abc_learner_button = tk.Button(root, text="ABC Learner", font=("Arial", 16), bg="#4CAF50", fg="white", command=start_abc_learner, padx=10, pady=10)
abc_learner_button.pack(pady=20)

abc_test_button = tk.Button(root, text="ABC Test", font=("Arial", 16), bg="#FF5733", fg="white", command=start_abc_test, padx=10, pady=10)
abc_test_button.pack(pady=20)

abc_matching_button = tk.Button(root, text="ABC Matching", font=("Arial", 16), bg="#FFC300", fg="white", command=start_abc_matching, padx=10, pady=10)
abc_matching_button.pack(pady=20)

root.mainloop()

Comments

Popular posts from this blog

Network Monitoring (Python Script)

 Network Monitoring (Python Script) Include Listing, Network Monitoring, Kick Etc. Script: import tkinter as tk from tkinter import messagebox import random import winsound  # For sound playback # Alphabet list alphabet = list("ABCDEFGHIJKLMNOPQRSTUVWXYZ") # Function to return to the main menu def return_to_main_menu(window):     window.destroy()     root.deiconify() # Function for ABC Learner def start_abc_learner():     root.withdraw()     learner_window = tk.Toplevel(root)     learner_window.title("ABC Learner")     learner_window.geometry("800x600")     learner_window.configure(bg="#FFCCCC")     def play_sound(letter):         try:             winsound.PlaySound(f"sounds/{letter}.wav", winsound.SND_FILENAME | winsound.SND_ASYNC)         except Exception as e:             print(f"Sound error for '...