i’m working on a login system, so i made the display with two buttons Login and Sign up button so i want to make a new page appears when the user clicks one the buttons for example if he clicks on Login the page will update to a page with entry boxes of the credentials and the same thing with the sign up button i need some ideas how to do it i’m somehow beginner in Tkinter, Here is my code :
from tkinter import * root = Tk() root.title("Login System") root.geometry('550x300') root.configure(bg="Black") home_label = Label(root,text="Welcome",font=("Helvatica",32),fg="White",bg="Black") home_label.pack(pady=30) login = Button(root,text="Login",font=("Nexa",22),bg="White",fg="Black",width=10) login.pack(pady=0) signup = Button(root,text="Sign UP",font=("Nexa",22),bg="White",fg="Black",width=10) signup.pack(pady=5) root.mainloop()
Advertisement
Answer
Here is a simple one with a TopLevel()
import tkinter as tk from tkinter.simpledialog import askstring from tkinter import * import os import re #Designing window for registration def register(): global register_screen register_screen = Toplevel(main_screen) register_screen.title("Register") register_screen.geometry("300x250") #Globalling variables global username global password global username_entry global password_entry global invLbl username = StringVar() password = StringVar() #Labels and entry fields for register screen invLbl = Label(register_screen, text="", fg="red", font=("calibri", 11)) Label(register_screen, text="Please enter details below", bg="blue").pack() Label(register_screen, text="").pack() username_lable = Label(register_screen, text="Username * ") username_lable.pack() username_entry = Entry(register_screen, textvariable=username) username_entry.pack() password_lable = Label(register_screen, text="Password * ") password_lable.pack() password_entry = Entry(register_screen, textvariable=password, show='*') password_entry.pack() Label(register_screen, text="").pack() Button(register_screen, text="Register", width=10, height=1, bg="blue", command = register_user).pack() invLbl.pack() #Designing window for login def login(): global login_screen login_screen = Toplevel(main_screen) login_screen.title("Login") login_screen.geometry("300x250") Label(login_screen, text="Please enter details below to login").pack() Label(login_screen, text="").pack() global username_verify global password_verify username_verify = StringVar() password_verify = StringVar() global username_login_entry global password_login_entry Label(login_screen, text="Username * ").pack() username_login_entry = Entry(login_screen, textvariable=username_verify) username_login_entry.pack() Label(login_screen, text="").pack() Label(login_screen, text="Password * ").pack() password_login_entry = Entry(login_screen, textvariable=password_verify, show= '*') password_login_entry.pack() Label(login_screen, text="").pack() Button(login_screen, text="Login", width=10, height=1, command = login_verify).pack() #Implementing event on register button def register_user(): username_info = username.get() password_info = password.get() valid = True for char in username_info: if char.isdigit() == True: valid = False #If there is a for example a number iin the username, this error message will be printed. invLbl.config(text="Invalid Username") if username_info == '': valid = False #If the username is left blank, this error message will be printed. invLbl.config(text="Enter a Username") #Password Validation if len(password_info) <3 or len(password_info) > 16: valid = False invLbl.config(text="Ensure password is not less than 3 or greater than 16 digits.") if valid == True: file = open(username_info, "w") file.write(username_info + "n") file.write(password_info) file.close() #Registration Success Message invLbl.config(text="Registration Success!", fg="green") username_entry.delete(0, END) password_entry.delete(0, END) #Implementing event on login button def login_verify(): username1 = username_verify.get() password1 = password_verify.get() username_login_entry.delete(0, END) password_login_entry.delete(0, END) list_of_files = os.listdir() if username1 in list_of_files: file1 = open(username1, "r") verify = file1.read().splitlines() if password1 in verify: login_sucess() else: password_not_recognised() else: user_not_found() #Designing popup for login success def login_sucess(): global login_success_screen login_success_screen = Toplevel(login_screen) login_success_screen.title("Success") login_success_screen.geometry("150x100") Label(login_success_screen, text="Login Success").pack() Button(login_success_screen, text="OK", command=delete_login_success).pack() #Designing popup for login invalid password def password_not_recognised(): global password_not_recog_screen password_not_recog_screen = Toplevel(login_screen) password_not_recog_screen.title("Success") password_not_recog_screen.geometry("150x100") Label(password_not_recog_screen, text="Invalid Password ").pack() Button(password_not_recog_screen, text="OK", command=delete_password_not_recognised).pack() #Designing popup for user not found def user_not_found(): global user_not_found_screen user_not_found_screen = Toplevel(login_screen) user_not_found_screen.title("Success") user_not_found_screen.geometry("150x100") Label(user_not_found_screen, text="User Not Found").pack() Button(user_not_found_screen, text="OK", command=delete_user_not_found_screen).pack() #Deleting popups def delete_login_success(): login_success_screen.destroy() login_screen.destroy() def delete_password_not_recognised(): password_not_recog_screen.destroy() def delete_user_not_found_screen(): user_not_found_screen.destroy() #Designing Main(first) window def main_account_screen(): global main_screen main_screen = Tk() main_screen.geometry("300x250") main_screen.title("Account Login") Label(text="Select Your Choice", bg="blue", width="300", height="2", font=("Calibri", 13)).pack() Label(text="").pack() Button(text="Login", height="2", width="30", command = login).pack() Label(text="").pack() Button(text="Register", height="2", width="30", command=register).pack() main_screen.mainloop() main_account_screen()