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
pip install openpyxl
Tap this code and select "copy" button to copy this code.
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()