我正在制作一个登录系统,当您输入不正确的密码或用户名时,它会显示“用户名或密码不正确”,然后当您将其更改为正确的密码时,它应该销毁前一个并显示新的,但相反不会破坏上一条消息,因此您可以在新消息下看到它
这是代码:
def submit_li(usern, passw, screen):
global users
global login_un
global login_suc
login_un = tk.Label()
login_suc= tk.Label()
login_un.destroy()
login_suc.destroy()
password = str(passw)
username = str(usern)
global login
login = False
for user in users:
if username == user[0] and password == user[1]:
login = True
if login:
login_suc = tk.Label(screen, font=('Arial', 13), text=f"{username} has logged in!")
login_suc.grid(column=0, row=3)
login = False
else:
login_un = tk.Label(screen, font=('Arial', 13), text="Username or password incorrect")
login_un.grid(column=0, row=3)
我尝试销毁它,我希望它删除以前的标签并显示新标签,输出是它显示在以前的标签上
您创建了两个带有空字符串的标签,然后在
submit_li()
的开头销毁它们。然后为登录状态创建另一个标签。因此后来的标签永远不会被破坏。
您可以简单地在函数外部创建登录状态标签并在函数内部更新它:
def submit_li(usern, passw, screen):
global login
password = str(passw)
username = str(usern)
for user in users:
if username == user[0] and password == user[1]:
login = True
msg = f"{username} has logged in!"
break
else:
login = False
msg = "Username or password incorrect"
# update the login status label
login_status.config(text=msg)
...
# create the label for login status
login_status = tk.Label(screen, font=('Arial', 13))
login_status.grid(row=3, column=0, columnspan=2)
...