我想在tkinter中使用记事本创建密码系统作为我的DB,其中包含我工作目录中的数据但是当我在输入字段中插入数据时,我收到错误登录失败。创建了txt文件,但它似乎是函数无法从文件中读取。有关如何执行此操作的任何建议。
import tkinter as tk
import sys
from tkinter import messagebox
now = open("passdoc.txt","w+")
now.write("user\n")
now.write("python3")
now.close()
def login_in():
with open("passdoc.txt") as f:
new = f.readlines()
name = new[0].rstrip()
password = new[1].rstrip()
if entry1.get() == new[0] in passdoc.txt and entry2.get() == new[1] in
passdoc.txt:
root.deiconify()
log.destroy()
else:
messagebox.showerror("error","login Failed")
def close():
log.destroy() #Removes toplevel window
root.destroy() #Removes root window
sys.exit() #Ends the script
root=tk.Tk()
log = tk.Toplevel() #
root.geometry("350x350")
log.geometry("200x200")
entry1 = tk.Entry(log) #Username entry
entry2 = tk.Entry(log) #Password entry
button1 = tk.Button(log, text="Login", command=login_in) #Login button
button2 = tk.Button(log, text="Cancel", command=close) #Cancel button
label1 = tk.Label(root, text="tkinter password system")
entry1.pack()
entry2.pack()
button1.pack()
button2.pack()
label1.place(x=30,y=300)
label = tk.Label(root, text="welcome").pack()
root.withdraw()
root.mainloop()
def login_in():
with open("passdoc.txt") as f:
new = f.readlines()
name = new[0].rstrip()
password = new[1].rstrip()
if entry1.get() == name in passdoc.txt and entry2.get() == password in
passdoc.txt:
root.deiconify()
log.destroy()
else:
messagebox.showerror("errror","login failed") #error login failed
(corrections)
答案 0 :(得分:0)
您的代码中有一些内容需要一些工作但主要问题在于您的import { MdDatepickerInputEvent } from '@angular/material';
...
startAt: Date;
date: Date;
lastDateInput: Date | null;
lastDateChange: Date | null;
onDateInput = (e: MdDatepickerInputEvent<Date>) => this.lastDateInput = e.value;
onDateChange = (e: MdDatepickerInputEvent<Date>) => this.lastDateChange = e.value;
函数。
您的login_in()
声明完全错误。我不确定你为什么用你的方式写它但是让我们解决它。
因为您定义了if
和name = new[0].rstrip()
您可以使用password = new[1].rstrip()
和name
来验证用户是否输入了正确的凭据。
因此,您的password
语句应如下所示:
if
你对if entry1.get() == name and entry2.get() == password:
的使用没有做任何事情也无法工作,因为in passdoc.txt
对python看起来像一个未定义的变量而在if语句中会失败。请记住,您已将passdoc.txt
的所有内容导入为passdoc.txt
,因此您没有创建名为f
的变量,而是为passdoc
语句创建了一个名为f
的变量
如果您想稍微缩短代码,可以删除with open()
和name
变量,然后使用password
所以你的new
函数看起来像这样:
login_in()
或者这个:
def login_in():
with open("passdoc.txt") as f:
new = f.readlines()
name = new[0].rstrip()
password = new[1].rstrip()
if entry1.get() == name and entry2.get() == password:
root.deiconify()
log.destroy()
else:
messagebox.showerror("error","login Failed")