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 :
JavaScript
x
19
19
1
from tkinter import *
2
3
root = Tk()
4
root.title("Login System")
5
root.geometry('550x300')
6
root.configure(bg="Black")
7
8
home_label = Label(root,text="Welcome",font=("Helvatica",32),fg="White",bg="Black")
9
home_label.pack(pady=30)
10
11
12
login = Button(root,text="Login",font=("Nexa",22),bg="White",fg="Black",width=10)
13
login.pack(pady=0)
14
15
signup = Button(root,text="Sign UP",font=("Nexa",22),bg="White",fg="Black",width=10)
16
signup.pack(pady=5)
17
18
root.mainloop()
19
Advertisement
Answer
Here is a simple one with a TopLevel()
JavaScript
1
182
182
1
import tkinter as tk
2
from tkinter.simpledialog import askstring
3
from tkinter import *
4
import os
5
import re
6
7
#Designing window for registration
8
9
def register():
10
global register_screen
11
register_screen = Toplevel(main_screen)
12
register_screen.title("Register")
13
register_screen.geometry("300x250")
14
#Globalling variables
15
global username
16
global password
17
global username_entry
18
global password_entry
19
global invLbl
20
username = StringVar()
21
password = StringVar()
22
#Labels and entry fields for register screen
23
invLbl = Label(register_screen, text="", fg="red", font=("calibri", 11))
24
Label(register_screen, text="Please enter details below", bg="blue").pack()
25
Label(register_screen, text="").pack()
26
username_lable = Label(register_screen, text="Username * ")
27
username_lable.pack()
28
username_entry = Entry(register_screen, textvariable=username)
29
username_entry.pack()
30
password_lable = Label(register_screen, text="Password * ")
31
password_lable.pack()
32
password_entry = Entry(register_screen, textvariable=password, show='*')
33
password_entry.pack()
34
Label(register_screen, text="").pack()
35
Button(register_screen, text="Register", width=10, height=1, bg="blue", command = register_user).pack()
36
invLbl.pack()
37
38
#Designing window for login
39
40
def login():
41
global login_screen
42
login_screen = Toplevel(main_screen)
43
login_screen.title("Login")
44
login_screen.geometry("300x250")
45
Label(login_screen, text="Please enter details below to login").pack()
46
Label(login_screen, text="").pack()
47
48
global username_verify
49
global password_verify
50
51
username_verify = StringVar()
52
password_verify = StringVar()
53
54
global username_login_entry
55
global password_login_entry
56
57
Label(login_screen, text="Username * ").pack()
58
username_login_entry = Entry(login_screen, textvariable=username_verify)
59
username_login_entry.pack()
60
Label(login_screen, text="").pack()
61
Label(login_screen, text="Password * ").pack()
62
password_login_entry = Entry(login_screen, textvariable=password_verify, show= '*')
63
password_login_entry.pack()
64
Label(login_screen, text="").pack()
65
Button(login_screen, text="Login", width=10, height=1, command = login_verify).pack()
66
67
#Implementing event on register button
68
69
def register_user():
70
username_info = username.get()
71
password_info = password.get()
72
valid = True
73
for char in username_info:
74
if char.isdigit() == True:
75
valid = False
76
#If there is a for example a number iin the username, this error message will be printed.
77
invLbl.config(text="Invalid Username")
78
if username_info == '':
79
valid = False
80
#If the username is left blank, this error message will be printed.
81
invLbl.config(text="Enter a Username")
82
83
#Password Validation
84
if len(password_info) <3 or len(password_info) > 16:
85
valid = False
86
invLbl.config(text="Ensure password is not less than 3 or greater than 16 digits.")
87
88
if valid == True:
89
file = open(username_info, "w")
90
file.write(username_info + "n")
91
file.write(password_info)
92
file.close()
93
#Registration Success Message
94
invLbl.config(text="Registration Success!", fg="green")
95
96
97
username_entry.delete(0, END)
98
password_entry.delete(0, END)
99
100
#Implementing event on login button
101
102
def login_verify():
103
username1 = username_verify.get()
104
password1 = password_verify.get()
105
username_login_entry.delete(0, END)
106
password_login_entry.delete(0, END)
107
108
list_of_files = os.listdir()
109
if username1 in list_of_files:
110
file1 = open(username1, "r")
111
verify = file1.read().splitlines()
112
if password1 in verify:
113
login_sucess()
114
115
116
else:
117
password_not_recognised()
118
119
else:
120
user_not_found()
121
122
#Designing popup for login success
123
124
def login_sucess():
125
global login_success_screen
126
login_success_screen = Toplevel(login_screen)
127
login_success_screen.title("Success")
128
login_success_screen.geometry("150x100")
129
Label(login_success_screen, text="Login Success").pack()
130
Button(login_success_screen, text="OK", command=delete_login_success).pack()
131
132
#Designing popup for login invalid password
133
134
def password_not_recognised():
135
global password_not_recog_screen
136
password_not_recog_screen = Toplevel(login_screen)
137
password_not_recog_screen.title("Success")
138
password_not_recog_screen.geometry("150x100")
139
Label(password_not_recog_screen, text="Invalid Password ").pack()
140
Button(password_not_recog_screen, text="OK", command=delete_password_not_recognised).pack()
141
142
#Designing popup for user not found
143
144
def user_not_found():
145
global user_not_found_screen
146
user_not_found_screen = Toplevel(login_screen)
147
user_not_found_screen.title("Success")
148
user_not_found_screen.geometry("150x100")
149
Label(user_not_found_screen, text="User Not Found").pack()
150
Button(user_not_found_screen, text="OK", command=delete_user_not_found_screen).pack()
151
152
#Deleting popups
153
154
def delete_login_success():
155
login_success_screen.destroy()
156
157
login_screen.destroy()
158
159
def delete_password_not_recognised():
160
password_not_recog_screen.destroy()
161
162
163
def delete_user_not_found_screen():
164
user_not_found_screen.destroy()
165
166
167
#Designing Main(first) window
168
169
def main_account_screen():
170
global main_screen
171
main_screen = Tk()
172
main_screen.geometry("300x250")
173
main_screen.title("Account Login")
174
Label(text="Select Your Choice", bg="blue", width="300", height="2", font=("Calibri", 13)).pack()
175
Label(text="").pack()
176
Button(text="Login", height="2", width="30", command = login).pack()
177
Label(text="").pack()
178
Button(text="Register", height="2", width="30", command=register).pack()
179
180
main_screen.mainloop()
181
main_account_screen()
182