πŸš€ Simple Login & Registration System in Python Tkinter πŸ“±

  Demo :


Click Video πŸ‘‡πŸ‘‡πŸ‘‡












Features:
✔️ Simple Login UI πŸ–₯️
✔️ Secure User Authentication πŸ”’
✔️ SQLite Database Integration πŸ“‚
✔️ User Registration Form ✍️


Code :


import tkinter as tk

from tkinter import messagebox

from tkinter import ttk

import sqlite3


# Global variables

root = tk.Tk()

root.withdraw()  # Hide main root window

login_window = None

home_window = None

settings_window = None

planner_window = None


# Database setup

def create_db():

    conn = sqlite3.connect('user_data.db')

    c = conn.cursor()

    c.execute('''CREATE TABLE IF NOT EXISTS users (username TEXT, password TEXT)''')

    conn.commit()

    conn.close()


# User registration

def register_user():

    username = reg_username_entry.get()

    password = reg_password_entry.get()


    if username and password:

        conn = sqlite3.connect('user_data.db')

        c = conn.cursor()

        c.execute("SELECT * FROM users WHERE username=?", (username,))

        if c.fetchone():

            messagebox.showerror("Error", "Username already exists!")

        else:

            c.execute("INSERT INTO users (username, password) VALUES (?, ?)", (username, password))

            conn.commit()

            messagebox.showinfo("Success", "User Registered Successfully!")

            register_window.destroy()

            open_login()

        conn.close()

    else:

        messagebox.showerror("Error", "Both fields are required!")


# Open Register window

def open_register():

    global register_window, reg_username_entry, reg_password_entry


    register_window = tk.Toplevel(root)

    register_window.title("Register")

    register_window.configure(bg='black')

    register_window.geometry('400x300')


    tk.Label(register_window, text="Username", fg='white', bg='black').pack(pady=10)

    reg_username_entry = tk.Entry(register_window)

    reg_username_entry.pack(pady=5)


    tk.Label(register_window, text="Password", fg='white', bg='black').pack(pady=10)

    reg_password_entry = tk.Entry(register_window, show="*")

    reg_password_entry.pack(pady=5)


    ttk.Button(register_window, text="Register", command=register_user).pack(pady=20)


# Login function

def login():

    global login_window


    username = username_entry.get()

    password = password_entry.get()


    if username and password:

        conn = sqlite3.connect('user_data.db')

        c = conn.cursor()

        c.execute("SELECT * FROM users WHERE username=? AND password=?", (username, password))

        if c.fetchone():

            messagebox.showinfo("Login Successful", "Welcome to the Home Screen!")

            login_window.destroy()

            open_home_screen()

        else:

            messagebox.showerror("Login Failed", "Invalid Username or Password")

        conn.close()

    else:

        messagebox.showerror("Error", "Both fields are required!")


# Open Login window

def open_login():

    global login_window, username_entry, password_entry


    login_window = tk.Toplevel(root)

    login_window.title("Login")

    login_window.configure(bg='black')

    login_window.geometry('400x300')


    tk.Label(login_window, text="Username", fg='white', bg='black').pack(pady=10)

    username_entry = tk.Entry(login_window)

    username_entry.pack(pady=5)


    tk.Label(login_window, text="Password", fg='white', bg='black').pack(pady=10)

    password_entry = tk.Entry(login_window, show="*")

    password_entry.pack(pady=5)


    ttk.Button(login_window, text="Login", command=login).pack(pady=20)

    ttk.Button(login_window, text="Register", command=open_register).pack(pady=5)


# Open Home Screen

def open_home_screen():

    global home_window


    if home_window is None or not home_window.winfo_exists():

        home_window = tk.Toplevel(root)

        home_window.title("Home Screen")

        home_window.configure(bg='black')

        home_window.geometry('500x400')


        tk.Label(home_window, text="Welcome to the Home Screen", fg='white', bg='black', font=('Helvetica', 16, 'bold')).pack(pady=20)

        ttk.Button(home_window, text="Settings", command=open_settings).pack(pady=20, ipadx=10, ipady=5)

        ttk.Button(home_window, text="Planner", command=open_planner).pack(pady=20, ipadx=10, ipady=5)


# Open Settings

def open_settings():

    global settings_window, home_window


    if settings_window is None or not settings_window.winfo_exists():

        if home_window and home_window.winfo_exists():

            home_window.destroy()


        settings_window = tk.Toplevel(root)

        settings_window.title("Settings")

        settings_window.configure(bg='black')

        settings_window.geometry('400x300')


        def toggle_notification():

            if notification_var.get() == 1:

                messagebox.showinfo("Notification", "Notifications Enabled!")

            else:

                messagebox.showinfo("Notification", "Notifications Disabled!")


        notification_var = tk.IntVar()

        ttk.Checkbutton(settings_window, text="Enable Notifications", variable=notification_var, command=toggle_notification).pack(pady=30)


        def close_settings():

            settings_window.destroy()

            open_home_screen()


        ttk.Button(settings_window, text="Back to Home", command=close_settings).pack(pady=20)


# Open Planner

def open_planner():

    global planner_window, home_window


    if planner_window is None or not planner_window.winfo_exists():

        if home_window and home_window.winfo_exists():

            home_window.destroy()


        planner_window = tk.Toplevel(root)

        planner_window.title("Planner")

        planner_window.configure(bg='black')

        planner_window.geometry('500x300')


        tk.Label(planner_window, text="Welcome to Planner! Add your tasks here.", fg='white', bg='black', font=('Helvetica', 14, 'bold')).pack(pady=50)


        def close_planner():

            planner_window.destroy()

            open_home_screen()


        ttk.Button(planner_window, text="Back to Home", command=close_planner).pack(pady=20)


# Initialize

create_db()

open_login()

root.mainloop()  # Start Tkinter main loop

Comments

Popular posts from this blog

πŸš€ Create a Python Screen Recorder with Audio (Complete Code)

Python IP Tracker App with GUI | Track IP Location Real-Time! (Working Project)