Tkinter不删除标签小部件

时间:2019-09-19 16:49:00

标签: python python-3.x tkinter

对此我还比较陌生,但是有人能够找出为什么errorLabel不会忘记的原因吗?我不知道为什么会这样。所有其他小部件都会消失,但errorLabel不会消失。

def checkLogin(root, username, password, userNameLabel, userNameEntry, passwordLabel, passwordEntry, loginButton):
    print(gui.checkUser(username, password))
    errorLabel = Label(root, text="")
    errorLabel.pack()
    if (gui.checkUser(username, password)):
      userNameLabel.forget()
      errorLabel.forget()
      userNameEntry.forget()
      passwordLabel.forget()
      passwordEntry.forget()
      loginButton.forget()
    else:
      errorLabel.config(text="Error, that is an incorrect username and/or password")

这是完整的代码

class gui:

  def checkUser(username, password):
    data = musicQuiz.getUsers()
    for usernameDB, passwordDB in data:
      if str(usernameDB) == str(username) and str(passwordDB) == str(password):
        return True
    return False

  def checkLogin(root, username, password, userNameLabel, userNameEntry, passwordLabel, passwordEntry, loginButton):
    print(gui.checkUser(username, password))
    errorLabel = Label(root, text="")
    errorLabel.pack()
    if (gui.checkUser(username, password)):
      userNameLabel.forget()
      errorLabel.forget()
      userNameEntry.forget()
      passwordLabel.forget()
      passwordEntry.forget()
      loginButton.forget()
    else:
      errorLabel.config(text="Error, that is an incorrect username and/or password")

  def login(root):
    userNameLabel = Label(root, text="Username")
    userNameEntry = Entry(root)
    passwordLabel = Label(root, text="Password")
    passwordEntry = Entry(root)
    loginButton = Button(root, text = "Login!", command=lambda: gui.checkLogin(root, userNameEntry.get(), passwordEntry.get(), userNameLabel, userNameEntry, passwordLabel, passwordEntry, loginButton))
    userNameLabel.pack()
    userNameEntry.pack()
    passwordLabel.pack()
    passwordEntry.pack()
    loginButton.pack() 

  def main():
    musicQuiz.setupSQL()
    root = Tk()
    root.geometry("350x350")
    gui.login(root)
    root.mainloop()

if __name__ == "__main__":
  gui.main()

0 个答案:

没有答案