如何解决我如何在 python tkinter 中检查文本文件中的数据?登录系统不工作
我制作了一个singup窗口,将人员的数据保存在文本文件和登录窗口中,我使用for循环来读取数据并检查密码和用户名是否正确,但每次我按登录时,它只显示不正确的用户名或密码,即使密码正确也不会打开仪表板窗口。
def check():
storefile = open('store.txt','r')
for line in storefile:
if namepasss and nameuser in line:
dashboard()
else:
Label(my,text="Incorrect username or\n password.",fg="red",bg="lightgray").grid(row=4,column=2)
name_useval = StringVar()
name_passval = StringVar()
namepasss = name_passval.get()
nameuser = name_useval.get()
Entry(my,textvariable=name_useval,bg="#e3e2e2",bd=0,highlightthickness=0,).grid(row=2,column=2)
Entry(my,textvariable=name_passval,).grid(row=3,column=2)
login = Button(my,text="Login",font=("sans serif",12,),bg="lightgray",bd=2,fg="Black",command=check).grid(row=10,column=2)
这是用户在singup窗口singup后数据保存在文本文件中的方式
('randomguy','randomguy@gmail.com','901909210','randompassword')
('randomguy2','randomguy2@gmail.com','901978210','randompassword2')
解决方法
声明
namepasss and nameuser in line
实际上被评估为
namepasss and (nameuser in line)
由于operator precedence。因此,考虑到 and
运算符的惰性,(写得不好)求值顺序如下:
if namepasss == True:
if (nameuser in line) == True:
return True
return False
由于 namepasss
是 string
,因此除 ""
之外的任何内容都将评估为 True
。
您真正需要的是以下内容:
(namepasss in line) and (nameuser in line)
在不知道文件中写了什么以及为 namepasss
和 nameuser
分配了什么值的情况下,很难提供更多帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。