Python Login/Register GUI with SQLite – FuzzuTech Project π
Demo :
Click Video πππ
✅ Description:
Explore this unique Login/Register GUI app developed using Python’s customtkinter
and sqlite3
. Perfect for beginners and intermediate developers who want to add a clean authentication system to their desktop apps. Features modern UI, dark mode, and switchable login/register screens. A great portfolio addition!
Watch the Short and try the source code. #FuzzuTech
✅ Features :
-
Built with
customtkinter
for a modern look -
SQLite integration for persistent local user storage
-
Dark mode GUI
-
Toggle between login/register forms
-
100% offline – no server setup needed
-
Ideal for: portfolio projects, tools with user access, and GUI-based login screens
Code :
import customtkinter as ctk
import tkinter.messagebox as msg
import sqlite3
# Set appearance
ctk.set_appearance_mode("dark")
ctk.set_default_color_theme("blue")
# Initialize app
app = ctk.CTk()
app.geometry("400x500")
app.title("π Fuzzu Login/Register GUI")
# Database setup
conn = sqlite3.connect("fuzzu_users.db")
cursor = conn.cursor()
cursor.execute("""
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT NOT NULL UNIQUE,
password TEXT NOT NULL
)
""")
conn.commit()
# --- Switch Frame Function ---
def switch_frame(frame):
login_frame.pack_forget()
register_frame.pack_forget()
frame.pack(pady=20)
# --- Login Frame ---
login_frame = ctk.CTkFrame(app)
ctk.CTkLabel(login_frame, text="π Login", font=("Arial", 24)).pack(pady=10)
login_user = ctk.CTkEntry(login_frame, placeholder_text="Username")
login_user.pack(pady=10)
login_pass = ctk.CTkEntry(login_frame, placeholder_text="Password", show="*")
login_pass.pack(pady=10)
def login():
u, p = login_user.get(), login_pass.get()
cursor.execute("SELECT * FROM users WHERE username=? AND password=?", (u, p))
if cursor.fetchone():
msg.showinfo("Login Success", "Welcome back, " + u + "!")
else:
msg.showerror("Failed", "Incorrect username or password!")
ctk.CTkButton(login_frame, text="Login", command=login).pack(pady=10)
ctk.CTkButton(login_frame, text="Go to Register", command=lambda: switch_frame(register_frame)).pack(pady=5)
# --- Register Frame ---
register_frame = ctk.CTkFrame(app)
ctk.CTkLabel(register_frame, text="π Register", font=("Arial", 24)).pack(pady=10)
reg_user = ctk.CTkEntry(register_frame, placeholder_text="Username")
reg_user.pack(pady=10)
reg_pass = ctk.CTkEntry(register_frame, placeholder_text="Password", show="*")
reg_pass.pack(pady=10)
def register():
u, p = reg_user.get(), reg_pass.get()
try:
cursor.execute("INSERT INTO users(username, password) VALUES (?, ?)", (u, p))
conn.commit()
msg.showinfo("Success", "Account created! Now login.")
switch_frame(login_frame)
except sqlite3.IntegrityError:
msg.showerror("Failed", "Username already exists!")
ctk.CTkButton(register_frame, text="Register", command=register).pack(pady=10)
ctk.CTkButton(register_frame, text="Back to Login", command=lambda: switch_frame(login_frame)).pack(pady=5)
# Show Login by default
login_frame.pack(pady=20)
app.mainloop()
Comments
Post a Comment