如何在tkinter中创建密码系统从文件中读取数据

时间:2017-09-11 09:48:11

标签: python tkinter passwords tkinter-entry

我想在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)

1 个答案:

答案 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()声明完全错误。我不确定你为什么用你的方式写它但是让我们解决它。

因为您定义了ifname = 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

编写if语句

所以你的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")