Reputation:
Can you help me guys, how can I close other windows if I open the dashboard window because when I use self.master.destroy() it destroys the current window and the windows that I currently opening. from tkinter import * from tkinter import messagebox from tkinter.font import Font from PIL import ImageTk, Image import mysql.connector from subprocess import call
def main():
root = Tk()
startpage = StartPage(root)
root.mainloop()
class StartPage:
#-----------------> ATTRIBUTES <------------------#
def __init__(self, master):
self.master = master
self.master.title("COVID-19 TRACKER")
self.master.resizable(False, False)
self.master.geometry('400x600+460+50')
self.master.iconbitmap('Images/covid19-logo.ico')
self.frame = Frame(self.master)
self.frame.pack()
#------------> BACKGROUND IMAGE <--------------#
startpage_bg_image = PhotoImage(file='Images/covid19-bg.png')
self.startpage_bg = startpage_bg = Label(self.frame, image=startpage_bg_image)
startpage_bg.user_bg_image = startpage_bg_image
startpage_bg.pack()
#-----------------> BUTTONS <------------------#
self.user_btn = Button(self.frame,
text="USER",
height=2,
width=22,
relief=RIDGE,
bg="ORANGE",
command=self.open_loginUser
).place(x=113, y=270)
self.admin_btn = Button(self.frame,
text="ADMIN",
height=2,
width=22,
relief=RIDGE,
bg="ORANGE",
command=self.open_loginAdmin
).place(x=113, y=325)
self.registration_btn = Button(self.frame,
text="REGISTER",
height=1,
width=17,
relief=RIDGE,
bg="ORANGE",
command=self.open_registration
).place(x=131, y=380)
self.about_btn = Button(self.frame,
text="ABOUT",
height=1,
width=13,
relief=RIDGE,
bg="ORANGE",
command=self.open_about
).place(x=290, y=565)
#-----------------> METHODS <------------------#
#Open Login User
def open_loginUser(self):
self.user_login = Toplevel(self.master)
self.startpage = UserLogin(self.user_login)
#Open Login Admin
def open_loginAdmin(self):
self.admin_login = Toplevel(self.master)
self.startpage = AdminLogin(self.admin_login)
#Open Registration Form
def open_registration(self):
self.registration_form = Toplevel(self.master)
self.startpage = Registration(self.registration_form)
#Open About Form
def open_about(self):
self.about_win = Toplevel(self.master)
self.startpage = About(self.about_win)
class UserLogin:
#-----------------> ATTRIBUTES <------------------#
def __init__(self, master):
self.master = master
self.master.title("Sign In As User")
self.master.resizable(False, False)
self.master.geometry('300x120+510+290')
self.master.iconbitmap('Images/covid19-logo.ico')
self.frame = Frame(self.master)
self.frame.pack()
#------------> BACKGROUND IMAGE <--------------#
startpage_bg_image = PhotoImage(file='Images/user_login_form.png')
self.startpage_bg = startpage_bg = Label(self.frame, image=startpage_bg_image)
startpage_bg.user_bg_image = startpage_bg_image
startpage_bg.pack()
#-----------------> BUTTONS <------------------#
self.login_btn = Button(self.frame,
text="LOGIN",
width=39,
command=self.check_UserPass,
bg="black",
fg="white",
borderwidth=1,
relief=RIDGE,
).place(x=10, y=85)
#-------------------> ENTRY <-------------------#
# Declaring the entry variable as global
# To access it to the check_UserPass method
global varUsernameUser
global varPasswordUser
# Setting the entered elements as string
varUsernameUser = StringVar()
varPasswordUser= StringVar()
self.username_entry = Entry(self.frame,
textvariable = varUsernameUser,
width=30,
borderwidth=0,
bg="black",
fg="white",
insertbackground="white"
).place(x=100, y=13)
self.password_entry = Entry(self.frame,
textvariable = varPasswordUser,
width=30,
borderwidth=0,
show = '*',
bg="black",
fg="white",
insertbackground="white",
).place(x=100, y=53)
#Check Admin's Username and Password
def check_UserPass(self):
# Calling database
try:
db = mysql.connector.connect(host="localhost", user="root", password="root", database="COVID19_USER_DATABASE")
except:
print("You are not connected to server")
else:
print("Conected Successfully")
mycursor = db.cursor()
checkUsername = varUsernameUser.get()
checkPassword = varPasswordUser.get()
query = "SELECT username, password FROM COVID19_USER_RECORDS"
mycursor.execute(query)
#Looping the username and password from database and checks if it's equal
for (username_x, password_y) in mycursor:
if checkUsername == username_x and checkPassword == password_y:
print("Success")
break
else:
print("Wrong Input")
self.open_popupwronginput()
db.close()
call (["python", "user_dashboard.py"])
# Pop Up: Wrong Input
def open_popupwronginput(self):
self.popup = Toplevel(self.master)
self.startpage = PopUpWrongInput(self.popup)
# Open User Dashboard
def open_userdashboard(self):
self.user_dashboard = Toplevel(self.master)
self.startpage = UserDashboard(self.user_dashboard)
class AdminLogin: def init(self, master): self.master = master self.master.title("Sign In As Admin") self.master.resizable(False, False) self.master.geometry('300x120+510+290') self.master.iconbitmap('Images/covid19-logo.ico') self.frame = Frame(self.master) self.frame.pack()
#------------> BACKGROUND IMAGE <--------------#
startpage_bg_image = PhotoImage(file='Images/user_login_form.png')
self.startpage_bg = startpage_bg = Label(self.frame, image=startpage_bg_image)
startpage_bg.user_bg_image = startpage_bg_image
startpage_bg.pack()
#-----------------> BUTTONS <------------------#
self.login_btn = Button(self.frame,
text="LOGIN",
width=39,
command=self.check_UserPass,
bg="black",
fg="white",
borderwidth=1,
relief=RIDGE,
).place(x=10, y=85)
#-------------------> ENTRY <-------------------#
# Declaring the entry variable as global
# To access it to the check_UserPass method
global varUsernameAdmin
global varPasswordAdmin
# Setting the entered elements as string
varUsernameAdmin = StringVar()
varPasswordAdmin = StringVar()
self.username_entry = Entry(self.frame,
textvariable = varUsernameAdmin,
width=30,
borderwidth=0,
bg="black",
fg="white",
insertbackground="white"
).place(x=100, y=13)
self.password_entry = Entry(self.frame,
textvariable = varPasswordAdmin,
width=30,
borderwidth=0,
show = '*',
bg="black",
fg="white",
insertbackground="white",
).place(x=100, y=53)
# Check Username and Password on database
# Username: covid19
# Password: covid19
def check_UserPass(self):
username = varUsernameAdmin.get()
password = varPasswordAdmin.get()
#check admin username and password
if username == 'covid19' and password == 'covid19':
print("Success")
else:
self.open_popupwronginput()
call (["python", "admin_dashboard.py"])
#Opens Admin Dashboard
def open_admindashboard(self):
self.admin_dashboard = Toplevel(self.master)
self.startpage = AdminDashboard(self.admin_dashboard)
#Pop up: WrongInput
def open_popupwronginput(self):
self.popup = Toplevel(self.master)
self.startpage = PopUpWrongInput(self.popup)
class Registration: def init(self, master): self.master = master self.master.title("Registration Form") self.master.resizable(False, False) self.master.geometry('280x318+520+210') self.master.iconbitmap('Images/covid19-logo.ico') self.frame = Frame(self.master) self.frame.pack()
#------------> BACKGROUND IMAGE <--------------#
startpage_bg_image = PhotoImage(file='Images/register_form.png')
self.startpage_bg = startpage_bg = Label(self.frame, image=startpage_bg_image)
startpage_bg.user_bg_image = startpage_bg_image
startpage_bg.pack()
#-----------------> ENTRY <------------------#
global name_get
global age_get
global address_get
global contactno_get
global gender_get
global username_get
global password_get
name_get = StringVar()
age_get = StringVar()
address_get = StringVar()
contactno_get = StringVar()
gender_get = StringVar()
username_get = StringVar()
password_get = StringVar()
self.entry_name = Entry(self.frame,
width=29,
textvariable=name_get,
borderwidth=0,
bg="black",
fg="white",
insertbackground="white",
).place(x=95, y=40)
self.entry_age = Entry(self.frame,
width=29,
textvariable=age_get,
borderwidth=0,
bg="black",
fg="white",
insertbackground="white",
).place(x=95, y=70)
self.entry_address = Entry(self.frame,
width=29,
textvariable=address_get,
borderwidth=0,
bg="black",
fg="white",
insertbackground="white",
).place(x=95, y=100)
self.entry_gender= Entry(self.frame,
width=29,
textvariable=gender_get,
borderwidth=0,
bg="black",
fg="white",
insertbackground="white",
).place(x=95, y=130)
self.entry_contactno = Entry(self.frame,
width=29,
textvariable=contactno_get,
borderwidth=0,
bg="black",
fg="white",
insertbackground="white",
).place(x=95, y=160)
self.entry_username = Entry(self.frame,
width=29,
textvariable=username_get,
borderwidth=0,
bg="black",
fg="white",
insertbackground="white",
).place(x=95, y=220)
self.entry_password = Entry(self.frame,
width=29,
textvariable=password_get,
borderwidth=0,
bg="black",
fg="white",
insertbackground="white",
).place(x=95, y=250)
#-----------------> BUTTONS <------------------#
self.register_button = Button(self.frame,
text="REGISTER",
width=35,
bg="black",
fg="white",
borderwidth=1,
relief=RIDGE,
command=self.add_to_database
).place(x=13, y=280)
def add_to_database(self):
#check admin username and password
try:
db = mysql.connector.connect(host="localhost", user="root", password="root", database="COVID19_USER_DATABASE")
except:
print("You are not connected to server")
else:
global name
global age
global address
global cotact_no
global gender
global username_g
global password
name = name_get.get()
age = age_get.get()
address = address_get.get()
cotact_no = contactno_get.get()
gender = gender_get.get()
username_g = username_get.get()
password = password_get.get()
if name == "":
self.open_popupsomething()
elif address == "":
self.open_popupsomething()
elif cotact_no == "":
self.open_popupsomething()
elif gender == "":
self.open_popupsomething()
elif age == "":
self.open_popupsomething()
elif password == "":
self.open_popupsomething()
elif username_g == "":
self.open_popupsomething()
else:
cursor = db.cursor()
username = username_g
sql1 = "SELECT * FROM COVID19_USER_RECORDS WHERE username = %s"
username = (username, )
result = cursor.execute(sql1, username)
result = cursor.fetchall()
if not result:
self.add_user()
else:
print("Username Exist")
self.open_popupsomething()
def add_user(self):
try:
db = mysql.connector.connect(host="localhost", user="root", password="root", database="COVID19_USER_DATABASE")
except:
print("You are not connected to server")
else:
mycursor = db.cursor()
sql = "INSERT INTO COVID19_USER_RECORDS (name, age, address, cotact_no, gender, username, password) VALUES (%s, %s, %s, %s, %s, %s, %s)"
value = (name, age, address, cotact_no, gender, username_g, password)
mycursor.execute(sql, value)
db.commit()
print("Added Successfully")
messagebox.showinfo("Console", "Successfully Added. Click 'Ok' to continue...")
mycursor.close()
db.close()
def open_popupsomething(self):
self.popup = Toplevel(self.master)
self.startpage = PopUpSomethingMissing(self.popup)
def open_popupcontinue(self):
self.popup = Toplevel(self.master)
self.startpage = PopUpContinue(self.popup)
class About: def init(self, master): self.master = master self.master.title("About") self.master.resizable(False, False) self.master.geometry('270x170+520+250') self.master.iconbitmap('Images/covid19-logo.ico') self.frame = Frame(self.master) self.frame.pack()
#------------> BACKGROUND IMAGE <--------------#
about_bg_image = PhotoImage(file='Images/about_form.png')
self.about_bg = about_bg = Label(self.frame, image=about_bg_image)
about_bg.user_bg_image = about_bg_image
about_bg.pack(pady=0)
#-----------------> BUTTONS <------------------#
self.ok_button = Button(self.frame,
text="OK",
width=10,
command=self.click,
bg="black",
fg="white",
borderwidth=1,
relief=RIDGE,
).place(x=180, y=135)
#-----------------> METHODS <------------------#
def click(self):
self.master.destroy()
class UserDashboard: def init(self, master): self.master = master self.master.title("User Dashboard") self.master.resizable(False, False) self.master.geometry('1000x600+160+50') self.master.iconbitmap('Images/covid19-logo.ico') self.frame = Frame(self.master) self.frame.pack()
#------------> BACKGROUND IMAGE <--------------#
def show_info():
pass
def destroy_windows(self):
self.popup = Toplevel(self.master)
self.startpage = PopUpContinue(self.popup)
class AdminDashboard: def init(self, master): self.master = master self.master.title("Admin Dashboard") self.master.resizable(False, False) self.master.geometry('1000x600+160+50') self.master.iconbitmap('Images/covid19-logo.ico') self.frame = Frame(self.master) self.frame.pack()
#------------> BACKGROUND IMAGE <--------------#
class PopUpSomethingMissing: def init(self, master): self.master = master self.master.title("Console") self.master.resizable(False, False) self.master.geometry('320x123+500+290') self.master.iconbitmap('Images/covid19-logo.ico') self.master.attributes("-topmost", True) self.frame = Frame(self.master) self.frame.pack()
#------------> BACKGROUND IMAGE <--------------#
about_bg_image = PhotoImage(file='Images/alert_box.png')
self.about_bg = about_bg = Label(self.frame, image=about_bg_image)
about_bg.user_bg_image = about_bg_image
about_bg.pack()
#-----------------> BUTTONS <------------------#
self.ok_button = Button(self.frame,
text="OK",
width=10,
command=self.click,
relief="ridge",
).place(x=220, y=87)
#-----------------> LABELS <------------------#
self.wronginput = Label(self.frame,
text="Something is missing. Please complete the form.",
bg="#ffffff"
).place(x=57, y=29)
def click(self):
self.master.destroy()
#Notification Box: Wrong Input class PopUpWrongInput: def init(self, master): self.master = master self.master.title("Console") self.master.resizable(False, False) self.master.geometry('316x123+510+290') self.master.iconbitmap('Images/covid19-logo.ico') self.master.attributes("-topmost", True) self.frame = Frame(self.master) self.frame.pack()
#------------> BACKGROUND IMAGE <--------------#
about_bg_image = PhotoImage(file='Images/alert_box.png')
self.about_bg = about_bg = Label(self.frame, image=about_bg_image)
about_bg.user_bg_image = about_bg_image
about_bg.pack()
#-----------------> BUTTONS <------------------#
self.ok_button = Button(self.frame,
text="OK",
width=10,
command=self.click,
relief="ridge",
).place(x=220, y=87)
#-----------------> LABELS <------------------#
self.wronginput = Label(self.frame,
text="Wrong input. Please recheck your entered data.",
bg="#ffffff"
).place(x=57, y=29)
#-----------------> METHODS <------------------#
def click(self):
self.master.destroy()
Upvotes: 0
Views: 198
Reputation: 110
from tkinter import*
root = Tk()
def open_new_and_destroy():
top = Tk()
root.destroy()
btn_destroy_open = Button(root , text ="destroy and open" ,command = open_new_and_destroy).pack()
root.mainloop()
Does this solve your problem
Upvotes: 0