Python 用户名和密码必须与文本文件中的数据匹配

Python 用户名和密码必须与文本文件中的数据匹配,python,tkinter,Python,Tkinter,我设计了一个用户名和密码程序。当用户输入用户名和密码时,应检查其是否与文本文件中的数据匹配。问题是,当我输入正确的用户名和密码时,它会显示“拒绝访问”。请帮我找到解决办法 from tkinter import * class Application(Frame): def __init__(self,master): Frame.__init__(self,master) self.grid() self.create_widget

我设计了一个用户名和密码程序。当用户输入用户名和密码时,应检查其是否与文本文件中的数据匹配。问题是,当我输入正确的用户名和密码时,它会显示“拒绝访问”。请帮我找到解决办法

from tkinter import *

class Application(Frame):

    def __init__(self,master):

        Frame.__init__(self,master)
        self.grid()
        self.create_widgets()

    def create_widgets(self):


        self.instruction = Label(self,text='Enter your Username')
        self.instruction.grid(row=0, column=0, columnspan=2,sticky=W)

        self.username=Entry(self)
        self.username.grid(row=1, column =1, sticky=W)

        self.sumbit_button=Button(self,text='Submit',command= self.reveal)
        self.sumbit_button.grid(row=5,column=0,sticky=W)

        self.instruction = Label(self,text='Enter a password')
        self.instruction.grid(row=3, column=0, columnspan=2,sticky=W)

        self.password=Entry(self)
        self.password.grid(row=4, column =1, sticky=W)

        self.text = Text(self,width=35, height=5, wrap=WORD)
        self.text.grid(row=6, column=0, columnspan=2,sticky=W)


    def reveal(self):
        file=open('data.RTF','r')
        data1=file.readlines()
        file.close

        content2=self.username.get()
        content=self.password.get()


        if content2==(data1[0]) and content==(data1[1]): 
            message='You have access to something special.'

        else:
            message='Access denied.'

        self.text.delete(0.0,END)
        self.text.insert(0.0,message)

root=Tk()
root.title('Username and Password')
root.geometry('250x150')
app=Application(root)

root.mainloop()

我已经更新了代码以显示在何处执行此操作,在之前的行中添加了注释

from tkinter import *

class Application(Frame):

    def __init__(self,master):

        Frame.__init__(self,master)
        self.grid()
        self.create_widgets()

    def create_widgets(self):


        self.instruction = Label(self,text='Enter your Username')
        self.instruction.grid(row=0, column=0, columnspan=2,sticky=W)

        self.username=Entry(self)
        self.username.grid(row=1, column =1, sticky=W)

        self.sumbit_button=Button(self,text='Submit',command= self.reveal)
        self.sumbit_button.grid(row=5,column=0,sticky=W)

        self.instruction = Label(self,text='Enter a password')
        self.instruction.grid(row=3, column=0, columnspan=2,sticky=W)

        self.password=Entry(self)
        self.password.grid(row=4, column =1, sticky=W)

        self.text = Text(self,width=35, height=5, wrap=WORD)
        self.text.grid(row=6, column=0, columnspan=2,sticky=W)


    def reveal(self):
        file=open('data.RTF','r')
        data1=file.readlines()
        file.close

        content2=self.username.get()
        content=self.password.get()

        # Code updated on next line
        if content2==(data1[0].replace("\n","").replace("\r","")) and content==(data1[1].replace("\n","").replace("\r","")): 
            message='You have access to something special.'

        else:
            message='Access denied.'

        self.text.delete(0.0,END)
        self.text.insert(0.0,message)

root=Tk()
root.title('Username and Password')
root.geometry('250x150')
app=Application(root)

root.mainloop()

我已经更新了代码以显示在何处执行此操作,在之前的行中添加了注释

from tkinter import *

class Application(Frame):

    def __init__(self,master):

        Frame.__init__(self,master)
        self.grid()
        self.create_widgets()

    def create_widgets(self):


        self.instruction = Label(self,text='Enter your Username')
        self.instruction.grid(row=0, column=0, columnspan=2,sticky=W)

        self.username=Entry(self)
        self.username.grid(row=1, column =1, sticky=W)

        self.sumbit_button=Button(self,text='Submit',command= self.reveal)
        self.sumbit_button.grid(row=5,column=0,sticky=W)

        self.instruction = Label(self,text='Enter a password')
        self.instruction.grid(row=3, column=0, columnspan=2,sticky=W)

        self.password=Entry(self)
        self.password.grid(row=4, column =1, sticky=W)

        self.text = Text(self,width=35, height=5, wrap=WORD)
        self.text.grid(row=6, column=0, columnspan=2,sticky=W)


    def reveal(self):
        file=open('data.RTF','r')
        data1=file.readlines()
        file.close

        content2=self.username.get()
        content=self.password.get()

        # Code updated on next line
        if content2==(data1[0].replace("\n","").replace("\r","")) and content==(data1[1].replace("\n","").replace("\r","")): 
            message='You have access to something special.'

        else:
            message='Access denied.'

        self.text.delete(0.0,END)
        self.text.insert(0.0,message)

root=Tk()
root.title('Username and Password')
root.geometry('250x150')
app=Application(root)

root.mainloop()


当您将其保存到文件中时,它将在“\n”结尾添加新行转义序列。在比较之前使用.replace(“\n”和“”)。如果您能告诉我我不确定将此排序放在何处,则与问题无关,您使用的索引
0.0
不正确。文本索引是字符串,而不是浮点数。此外,第一个字符的索引为1.0。0.0可以工作,但这只是因为tkinter在接受的内容上有点自由。您可以使用data1[0].strip(“\n”)删除新行转义序列。很遗憾,它不工作。当我尝试data1[0].strip(“\n)时它不起作用,当我更改索引时,它不起作用。当您将它保存到文件中时,它将在“\n”末尾添加新行转义序列。在比较之前使用.replace(“\n”和“”)。如果您能告诉我我不确定将此排序放在何处,则与问题无关,您使用的索引
0.0
不正确。文本索引是字符串,而不是浮点数。此外,第一个字符的索引为1.0。0.0可以工作,但这只是因为tkinter在接受的内容上有点自由。您可以使用data1[0].strip(“\n”)删除新行转义序列。很遗憾,它不工作。当我尝试data1[0].strip(“\n)时它不起作用,当我更改索引时它不起作用。它仍然显示访问被拒绝。我不确定在测试它时它对我起作用的原因,您确定您在data.rtf文件中输入了什么吗?根据您创建rtf文件的方式,您可能需要将“\n”更改为“\r\n”。我已经更新了我的答案,包括这个。是的,我确信它们在同一个文件中,我已经测试过几次了。我相信文件本身有问题。我使用了一个.txt文件,它工作了。谢谢,它仍然显示访问被拒绝。我不确定测试时它为什么对我工作,确实输入了data.rtf文件中的内容吗?根据创建rtf文件的方式,可能需要将“\n”更改为“\r\n”。我已经更新了我的答案,包括这个。是的,我确信它们在同一个文件中,我已经测试过几次了。我相信文件本身有问题。我使用了一个.txt文件,它工作了。谢谢