for循环的结构看起来不对。由于某种原因,它没有正确跳转到声明的“其他”部分。我将在控制台中尝试这一点,以简化一些事情,看看我是否有运气:
echo BB-BONE-AUDI-02 > /sys/devices/bone_capemgr*/slots
答案 0 :(得分:1)
您的循环结构的方式,您将获得文件中与您的用户名/密码不匹配的每一行的“拒绝”消息,并为匹配的每一行获取“已接受”消息。如果您只想显示一条消息,请等待循环结束以创建一条消息。
access_permitted = False
for i,s in enumerate(fields):
if textlogin.get()==fields[i] and textpassword.get()==fields[i+1]:
access_permitted = True
if access_permitted:
welcome=Label(myGui,text="Access Granted. Loading Profile ....")
welcome.pack()
else:
denied=Label(myGui,text="Access Denied")
denied.pack()
line=fin.readline()
我不能肯定地说,但是你似乎也可能会在循环中遇到IndexError: list index out of range
错误,因为fields[i+1]
会超过列表末尾的一个错误最后的迭代。我猜测fields
是一个包含用户名+密码元组的列表,在这种情况下你应该尝试:
for username, password in fields:
if textlogin.get()==username and textpassword.get()==password:
access_permitted = True
如果fields
不是用户名 - 密码元组列表,您可能需要尝试其他方法。
如果fields
中的每个项目都包含用户名和密码以及其他项目,请尝试:
for row in fields:
if textlogin.get()==row[0] and textpassword.get()==row[1]:
access_permitted = True