如何去掉if语句(放在函数中)中TkInter中的标签?

2024-05-21 02:22:01 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我试着做一个注册函数,它会接受用户名和密码。我这样做是为了检查用户名列表(保存在“registered.txt”中)。当我测试它时,我首先输入了一个无效的用户名。它工作得很好,然后我输入了一个有效的用户名,它被保存在“registered.txt”中,并被制作成自己的文本文件。但是,窗口底部的标签仍然是“用户名无效…”,即使注册过程成功。我试过使用pack\u forget()函数,但它不起作用。我用对了吗?我该怎么解决这个问题

def register_user():
    global username_entry, password_entry
    username_info = username_entry.get()
    password_info = password_entry.get()

    file3 = open("registered.txt", "r")
    names = file3.read()
    name = names.split(",")

    label2 = tk.Label(win2, text="")
    label2.pack()
    label = tk.Label(win2, text="")
    label.pack()

    if username_info in name:
        label2.pack_forget()
        label.pack_forget()
        label2 = tk.Label(win2, text="")
        label2.pack()
        label = tk.Label(win2, text="Username invalid. Please Try again.", fg="red")
        label.pack()
        file3.close()

    else:
        label2.pack_forget()
        label.pack_forget()
        file = open(username_info + ".txt", "w")
        file.write(username_info + "\n" + password_info)
        file.close()

        file2 = open("registered.txt", "a")
        file2.write(username_info + ",")

        label2 = tk.Label(win2, text="")
        label2.pack()
        label = tk.Label(win2, text="Registration Successful", fg="green")
        label.pack()

    username_entry.delete(0, tk.END)
    password_entry.delete(0, tk.END)

Tags: textinfotxtusernamepasswordlabelpack用户名