Python 在不同类别中销毁tkinter屏幕
在我的程序中,一旦用户登录,就会打开一个新类,在该类中加载一个函数以检查用户详细信息是否正确,然后继续关闭登录窗口,显示错误消息,然后重新加载页面。如果用户成功登录,则登录屏幕关闭,程序继续。但是,我无法关闭在主类中打开的窗口,但我可以在其他类中打开窗口。我怎样才能在教师课堂上关闭登录屏幕Python 在不同类别中销毁tkinter屏幕,python,oop,tkinter,Python,Oop,Tkinter,在我的程序中,一旦用户登录,就会打开一个新类,在该类中加载一个函数以检查用户详细信息是否正确,然后继续关闭登录窗口,显示错误消息,然后重新加载页面。如果用户成功登录,则登录屏幕关闭,程序继续。但是,我无法关闭在主类中打开的窗口,但我可以在其他类中打开窗口。我怎样才能在教师课堂上关闭登录屏幕 class Main: def __init__(self, screen): self._frame = None self.username = StringVa
class Main:
def __init__(self, screen):
self._frame = None
self.username = StringVar()
self.password = StringVar()
self.var_FName = StringVar()
self.var_SName = StringVar()
self.var_password1 = StringVar()
self.var_usertype = StringVar()
self.UserID = StringVar()
def Main_menu(self):
screen.geometry("300x250")
screen.title("Manager of stuff")
Label(screen, text = "Login Menu", bg = "light blue", width = "300", font = ('',35),pady = 10).pack()
Label(text = "").pack()
Button(text = "Login", height = "2", width = "30", command = self.login).pack()
Label(text = "").pack()
Button(text = "Register",height = "2", width = "30", command = self.register).pack()
def login(self):
login = Toplevel(screen) #this is the screen im trying to close
login.title("Login")
login.geometry("500x450")
Label(login, text = "Please enter your username and password below: ").pack()
Label(login, text = "").pack()
Label(login, text = "Username: ").pack()
Entry(login, textvariable = self.username).pack()
Label(login, text = "").pack()
Label(login, text = "Password: ").pack()
Entry(login, textvariable = self.password, show= "*").pack()
Label(login, text = "").pack()
Button(login, text = "Login As a Teacher", width = 20, height = 3, command = lambda : Teacher.LoginFunc(self)).pack()
Label(login, text = "").pack()
Button(login, text = "Login As a Student", width = 20, height = 3, command = lambda : Student.LoginFunc(self)).pack()
Label(login, text = "").pack()
Button(login, text = "Back", width = 30, height = 4, command = lambda : login.destroy()).pack()
login.mainloop()
class Teacher (Main):
def __init__(self, screen):
self._frame = None
def LoginFunc(self):
while True:
with sqlite3.connect('MyComputerScience.db') as db:
cursor = db.cursor()
find_user = ("SELECT * FROM users WHERE username = ? AND password = ? AND usertype = 'Teacher'")
cursor.execute(find_user, (self.username.get(), self.password.get()))
results = cursor.fetchall()
if results:
for i in results:
#Label(Main.login, text = "Log-in successful!", fg = "GREEN", font = "Calibri").pack()
Teacher.teachmain(self)
else:
Main.logindestroy(self, login)
ms.showerror("Error", "Incorrect Details")
Main.login(self)
break
因此,您的目标是在用户凭据正确时关闭登录窗口?同时关闭整个顶级,如果详细信息不正确,也只关闭登录页面