【发布时间】:2021-09-24 12:11:42
【问题描述】:
我创建了一个带有 GUI 的图书馆管理系统,并希望在其上添加一个登录 GUI。我希望在登录窗口中首先弹出,然后,如果凭据正确,则打开管理系统。
我面临的问题是,当我点击登录按钮时,管理系统打开但登录窗口也停留在那里。我在为管理系统创建窗口之前尝试过self.root.destroy(),但它关闭了所有窗口并且管理系统也关闭了。`
我能做什么?
class login_system():
def __init__(self, root):
self.root = root
self.root.title('Login')
self.root.geometry('500x250')
self.root.config(background='black')
self.loggedin = False
user = Label(root, text='Username:', font=('times new roman',20, 'bold'), fg='white', bg='black', padx=15,pady=10)
user.grid(row=0, column=0, padx=10, pady=10)
password = Label(root, text='Password:', font=('times new roman',20, 'bold'), fg='white', bg='black', padx=15 )
password.grid(row=1, column=0, padx=10, pady=10)
self.user_var= StringVar()
self.pass_var= StringVar()
user_ent = Entry(root, width=20, font=('times new roman',18, 'bold'),textvariable=self.user_var)
user_ent.grid(row=0, column=1)
pass_ent = Entry(root, width=20,font=('times new roman',18, 'bold'),textvariable=self.pass_var)
pass_ent.grid(row=1, column=1)
submit = Button(root, text='Login', command=self.login,font=('times new roman',18, 'bold'))
submit.grid(row=3, column=1, pady=10)
def login(self):
userinfo = self.user_var.get()
passinfo= self.pass_var.get()
conn = mysql.connector.connect(host='localhost', username='root', password = 'testpass', database = 'librarydb')
my_cursor = conn.cursor()
my_cursor.execute('SELECT username, password FROM login_system')
rows = my_cursor.fetchall()
conn.close()
for row in rows:
if row[0] ==userinfo:
if row[1]==passinfo:
tmsg.showinfo('Successful!', 'Logged In')
self.loggedin=True
self.newWindow= Toplevel(self.root)
self.app = LibraryManagementSystem(self.newWindow)
else:
tmsg.showinfo('Incorrect', 'Incorrect Password. Please try again')
break
else:
tmsg.showinfo('Incorrect', 'Incorrect username. Please try again')
break
class LibraryManagementSystem():
def __init__(self, root):
self.root= root
self.root.title('Library Management System')
self.root.geometry('1366x768')
【问题讨论】:
-
那是因为您在这里使用的是 TopLevel 小部件。因此,当您关闭主窗口时,顶层也会关闭。制作新窗口可能
标签: python oop user-interface tkinter