DIVYANSH PROJECT

import mysql.connector
import tkinter as tk
from tkinter import PhotoImage
from tkinter import messagebox
from PIL import Image, ImageTk
from tkinter import ttk  # for Treeview

def connect_to_db():
    try:
        return mysql.connector.connect(
            host="localhost",
            user="root",
            password="12345678",
            database="register"
        )
    except mysql.connector.Error as err:
        messagebox.showerror("Database Error", f"Error: {err}")
        return None

# Function to create a new user
def create_user(cursor, name, user_id):
    try:
        cursor.execute("INSERT INTO user (name, id) VALUES (%s, %s)", (name, user_id))
        print("User created successfully.")
    except mysql.connector.Error as err:
        messagebox.showerror("Database Error", f"Error: {err}")

# Function to retrieve all user data
def get_all_users(cursor):
    cursor.execute("SELECT * FROM user")
    return cursor.fetchall()

# Function to retrieve a specific user by ID
def get_user(cursor, user_id):
    cursor.execute("SELECT * FROM user WHERE id = %s", (user_id,))
    return cursor.fetchone()

def register_user():
    conn = connect_to_db()
    if conn:
        cursor = conn.cursor()
        username = entry_name.get()
        user_id = entry_id.get()
        
        if username and user_id:
            create_user(cursor, username, user_id)
            conn.commit()
            messagebox.showinfo("Registration", "Registration Successful!")
            cursor.close()
            conn.close()
        else:
            messagebox.showwarning("Input Error", "Please fill all fields")
        conn.close()

def show_specific_record():
    conn = connect_to_db()
    if conn:
        cursor = conn.cursor()
        user_id = entry_specific_id.get()
        if user_id:
            user_data = get_user(cursor, user_id)
            if user_data:
                display_records([user_data])
            else:
                messagebox.showwarning("Not Found", "No record found for the given ID")
            cursor.close()
            conn.close()
        else:
            messagebox.showwarning("Input Error", "Please enter an ID")

def view_user():
    def display_record_options():
        view_window.destroy()
        show_view_options()

    def show_all_records():
        def check_password():
            if entry_password.get() == '12345678':  #PASSCODE
                conn = connect_to_db()
                if conn:
                    cursor = conn.cursor()
                    records = get_all_users(cursor)
                    display_records(records)
                    cursor.close()
                    conn.close()
                password_window.destroy()
            else:
                messagebox.showwarning("Invalid Password", "The password you entered is incorrect")

        # PASSWORD WINDOW SETTING (VIEW ALL RECORD - ENTER PASSWORD)

        password_window = tk.Toplevel(root)
        password_window.title("Enter Password")
        password_window.geometry("300x150")

        img = PhotoImage(file=r"C:\Users\LIVA\Desktop\Image\6521996.png")
        password_window.iconphoto(False, img)

        password_window.resizable(False, False)
        

        tk.Label(password_window, text="Enter Password", bg='lightblue').pack(pady=10)
        entry_password = tk.Entry(password_window, show="*")
        entry_password.pack(pady=5)

        tk.Button(password_window, text="Submit", command=check_password, bg='blue', fg='white').pack(pady=10)

    view_window = tk.Toplevel(root)
    view_window.title("View Records")
    view_window.geometry("400x300")

    img = PhotoImage(file=r"C:\Users\LIVA\Desktop\Image\6521996.png")
    view_window.iconphoto(False, img)

    view_window.resizable(False, False)
    

  
    
    bg_label = tk.Label(view_window, image=bg_photo)
    bg_label.place(relwidth=1, relheight=1)

    tk.Label(view_window, text="Choose an option", bg='lightblue').pack(pady=10)

    all_button = tk.Button(view_window, text="View All Records", command=show_all_records, bg='blue', fg='white')
    all_button.pack(pady=5)

    specific_button = tk.Button(view_window, text="View Specific Record by ID", command=display_record_options, bg='blue', fg='white')
    specific_button.pack(pady=5)

    view_window.mainloop()

def show_view_options():
    option_window = tk.Toplevel(root)
    option_window.title("View Specific Record")
    option_window.geometry("400x300")
    option_window.resizable(False, False)
    
    img = PhotoImage(file=r"C:\Users\LIVA\Desktop\Image\6521996.png")
    option_window.iconphoto(False, img)

    bg_label = tk.Label(option_window, image=bg_photo)
    bg_label.place(relwidth=1, relheight=1)

    tk.Label(option_window, text="Enter ID to View Record", bg='lightblue').pack(pady=10)
    global entry_specific_id
    entry_specific_id = tk.Entry(option_window)
    entry_specific_id.pack(pady=5)

    view_button = tk.Button(option_window, text="SUBMIT", command=show_specific_record, bg='blue', fg='white')
    
    view_button.pack(pady=10)

    option_window.mainloop()

def display_records(records):
    display_window = tk.Toplevel(root)
    display_window.title("Records")
    display_window.geometry("500x400")

    img = PhotoImage(file=r"C:\Users\LIVA\Desktop\Image\6521996.png")
    display_window.iconphoto(False, img)

    bg_label = tk.Label(display_window, image=bg_photo)
    bg_label.place(relwidth=1, relheight=1)

    tree = ttk.Treeview(display_window, columns=("Name", "ID"), show="headings")
    tree.heading("Name", text="Name")
    tree.heading("ID", text="ID")
    tree.pack(fill=tk.BOTH, expand=True)

    for record in records:
        tree.insert("", "end", values=record)

def show_help():
    messagebox.showinfo("Help", "This application allows you to register your Name and ID, and view your record by entering your ID.")

def show_contact():
    messagebox.showinfo("Contact", "For support, please contact: Divyansh@gmail.com")

def exit_app():
    root.destroy()

# Create the main window
root = tk.Tk()
root.title("Registration Form")

img = PhotoImage(file=r"C:\Users\LIVA\Desktop\Image\6521996.png")
root.iconphoto(False, img)

root.resizable(False, False)

root.geometry("600x500")

bg_image = Image.open(r"C:\Users\LIVA\Desktop\Image\GD1.png")
bg_image = bg_image.resize((600, 500))
bg_photo = ImageTk.PhotoImage(bg_image)
bg_label = tk.Label(root, image=bg_photo)
bg_label.place(relwidth=1, relheight=1)

menu_bar = tk.Menu(root)
root.config(menu=menu_bar)

help_menu = tk.Menu(menu_bar, tearoff=0)
help_menu.add_command(label="Help", command=show_help)
menu_bar.add_cascade(label="Help", menu=help_menu)

contact_menu = tk.Menu(menu_bar, tearoff=0)
contact_menu.add_command(label="Contact", command=show_contact)
menu_bar.add_cascade(label="Contact", menu=contact_menu)

view_menu = tk.Menu(menu_bar, tearoff=0)
view_menu.add_command(label="View Records", command=view_user)
menu_bar.add_cascade(label="View Records", menu=view_menu)

exit_menu = tk.Menu(menu_bar, tearoff=0)
exit_menu.add_command(label="Exit", command=exit_app)
menu_bar.add_cascade(label="Exit", menu=exit_menu)

form_frame = tk.Frame(root, bg='lightblue', bd=5)
form_frame.place(relx=0.5, rely=0.3, anchor='center')

view_frame = tk.Frame(root, bg='lightblue', bd=5)
view_frame.place(relx=0.5, rely=0.7, anchor='center')

tk.Label(form_frame, text="Name", bg='lightblue').grid(row=0, column=0, padx=10, pady=5)
entry_name = tk.Entry(form_frame)
entry_name.grid(row=0, column=1, padx=10, pady=5)

tk.Label(form_frame, text="ID", bg='lightblue').grid(row=1, column=0, padx=10, pady=5)
entry_id = tk.Entry(form_frame)
entry_id.grid(row=1, column=1, padx=10, pady=5)

register_button = tk.Button(form_frame, text="Register", command=register_user, bg='blue', fg='white')
register_button.grid(row=2, columnspan=2, pady=10)

view_button = tk.Button(view_frame, text="View Record", command=view_user, bg='blue', fg='white')
view_button.grid(row=1, columnspan=2, pady=9, padx=18)

root.mainloop()

Leave a comment