Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Don';我不知道为什么不使用tkinter更新标签_Python_Tkinter_Login_Logic_Labels - Fatal编程技术网

Python Don';我不知道为什么不使用tkinter更新标签

Python Don';我不知道为什么不使用tkinter更新标签,python,tkinter,login,logic,labels,Python,Tkinter,Login,Logic,Labels,我是python的初学者,正在尝试为一个学校程序及其GUI创建一个简单的登录系统 我做得很好,因为我是python的初学者(以及一般的编码),我正在努力学习使用tkinter 除了当我试图让程序在用户“access=True”时更改标签文本外,我已经解决了所有问题 以下是代码片段: from tkinter import * from time import sleep usernamelist = ["bob123","tim321","me","duda"] passwordlist =

我是python的初学者,正在尝试为一个学校程序及其GUI创建一个简单的登录系统

我做得很好,因为我是python的初学者(以及一般的编码),我正在努力学习使用tkinter

除了当我试图让程序在用户“
access=True
”时更改标签文本外,我已经解决了所有问题

以下是代码片段:

from tkinter import *
from time import sleep

usernamelist = ["bob123","tim321","me","duda"]
passwordlist = ["banana","apple","password123","duda2000"]


def checklogin():
    global access
    global mode
    username = entuser.get()
    password = entpass.get()
    userfound = False
    if username == "admin":
        if password == "allowmein":
            access = True
            mode = "admin"
        else:
            lberror.config(text="Incorrect password, try again")
            entpass.delete(0, END)
    else:
        for i in range(len(usernamelist)):
            if username == usernamelist[i]:
                userfound = True
                if password == passwordlist[i]:
                    access = True
                else:
                    lberror.config(text="Incorrect password, try again")
                    entpass.delete(0, END)
    if userfound == False and username != "admin":
        lberror.config(text="Username not found, try again")
        entuser.delete(0, END)
        entpass.delete(0, END)
    if access == True:
        lberror.config(text= "Access Granted")
        sleep(1)
        mainlog.destroy()
        return access
        return mode


access = False
mode = "student"

mainlog = Tk()
mainlog.title("Maths Quiz Login")
lbuser = Label(mainlog, text= "Username: ")
lbpass = Label(mainlog, text= "Password: ")
entuser = Entry(mainlog,)
entpass = Entry(mainlog, show="*")
logbtn = Button(mainlog, text= "Login", command= checklogin)
lberror = Label(mainlog, text= "")

lbuser.grid(row=0, column=0)
lbpass.grid(row=1, column=0)
entuser.grid(row=0, column=1)
entpass.grid(row=1, column=1)
logbtn.grid(row=2, column=1)
lberror.grid(row=3,column = 0, columnspan = 2)

mainlog.geometry("250x150+100+100")

mainlog.mainloop()

当我试图运行代码时,
lberror
标签在命令显示错误的密码或用户名时,似乎遵守所有命令,但在相应的事件发生时,它无法显示已授予的访问权限,我试图寻找解释,但无法找到

将标签更改为“授予访问权限”后,您似乎正在销毁窗口:
mainlog.destroy()

如果删除该窗口,将显示“已授予访问权限”

如果确实希望在成功登录后销毁窗口,请在
sleep(1)
之前添加
mainlog.update()


如果回答了您的问题,请考虑接受投票或将答案标记为“接受”,谢谢您!我不知道!这正是我要找的,谢谢!
if access == True:
        lberror.config(text= "Access Granted")
        mainlog.update()
        sleep(1)
        mainlog.destroy()
        return access
        return mode