badge
Home Projects Basic About

Project-4

Register and login on tkinter.

In this project, we can learn how to use login and register using tkinter while all login data stores in (.xlsx).

In this image you can see how to login

loginx

Before run this code install both tkinter and excelreader using command:-

pip install openpyxl

Tap this code and select "copy" button to copy this code.

Code - loginx.py


import tkinter
from tkinter import messagebox
import openpyxl
import os

FILE_NAME = "users.xlsx"

# ---------- EXCEL SETUP ----------
def init_excel():
    if not os.path.exists(FILE_NAME):
        wb = openpyxl.Workbook()
        ws = wb.active
        ws.title = "Users"
        ws.append(["Username", "Password"])
        wb.save(FILE_NAME)

# ---------- REGISTER ----------
def register_user():
    username = reg_user.get()
    password = reg_pass.get()

    if username == "" or password == "":
        messagebox.showerror("Error", "All fields are required")
        return

    wb = openpyxl.load_workbook(FILE_NAME)
    ws = wb.active

    for row in ws.iter_rows(min_row=2, values_only=True):
        if row[0] == username:
            messagebox.showerror("Error", "User already exists")
            return

    ws.append([username, password])
    wb.save(FILE_NAME)

    messagebox.showinfo("Success", "Registered successfully")
    register_window.destroy()
    open_login()

# ---------- LOGIN ----------
def login_user():
    username = login_user_entry.get()
    password = login_pass_entry.get()

    wb = openpyxl.load_workbook(FILE_NAME)
    ws = wb.active

    for row in ws.iter_rows(min_row=2, values_only=True):
        if row[0] == username and row[1] == password:
            messagebox.showinfo("Success", "Login successful")
            return

    messagebox.showerror("Error", "Invalid username or password")

# ---------- WINDOWS ----------
def open_register():
    global register_window, reg_user, reg_pass
    login_window.destroy()

    register_window = tkinter.Tk()
    register_window.title("Register")
    register_window.geometry("350x250")
    register_window.resizable(False, False)

    tkinter.Label(register_window, text="Register", font=("Arial", 16, "bold")).pack(pady=10)

    tkinter.Label(register_window, text="Username").pack()
    reg_user = tkinter.Entry(register_window)
    reg_user.pack()

    tkinter.Label(register_window, text="Password").pack()
    reg_pass = tkinter.Entry(register_window, show="*")
    reg_pass.pack()

    tkinter.Button(register_window, text="Register", width=15, command=register_user).pack(pady=10)

    login_link = tkinter.Label(
        register_window,
        text="Already registered? Login here",
        fg="blue",
        cursor="hand2"
    )
    login_link.pack()
    login_link.bind("", lambda e: open_login_from_register())

    register_window.mainloop()

def open_login_from_register():
    register_window.destroy()
    open_login()

def open_login():
    global login_window, login_user_entry, login_pass_entry

    login_window = tkinter.Tk()
    login_window.title("Login")
    login_window.geometry("350x250")
    login_window.resizable(False, False)

    tkinter.Label(login_window, text="Login", font=("Arial", 16, "bold")).pack(pady=10)

    tkinter.Label(login_window, text="Username").pack()
    login_user_entry = tkinter.Entry(login_window)
    login_user_entry.pack()

    tkinter.Label(login_window, text="Password").pack()
    login_pass_entry = tkinter.Entry(login_window, show="*")
    login_pass_entry.pack()

    tkinter.Button(login_window, text="Login", width=15, command=login_user).pack(pady=10)
    tkinter.Button(login_window, text="Register", width=15, command=open_register).pack()

    login_window.mainloop()

# ---------- START ----------
init_excel()
open_login()