1
def btnClick(self):
    filereader = open("Login.txt", 'r+')
    dataload = filereader.readlines()
    UN=self.entr1.get()
    PW=self.entr2.get()
    for line in dataload:
        (username,password) = line.split('|')
        UN2 = username
        PW2 = password
        if (UN==UN2) & (PW==PW2):
            tkMessageBox.showinfo("Success", "Successfully login!")
            self.main()
        else:
            tkMessageBox.showinfo("Error", "Incorrect login credentials!")
            self.clear()
    filereader.close()
    return

当用户单击登录按钮时,我有上面的事件代码,我使用记事本作为数据库,这是里面的数据

用户|1234
管理员|1234

我认为我的代码是正确的,但是当我运行它时,即使我输入了正确的数据,它也总是说不正确。你能帮我找出我的错误吗?

4

1 回答 1

2

您应该能够使用一个简单的print语句来输出您从文件中读取的值,并将它们与您实际输入的值进行比较。


由于.readlines()不会去除换行符,因此您从文件中读取的行/密码总是以\n字符结尾。

你应该删除它;一个简单的方法是调用replace('\n', '')or rstrip('\n')

(username,password) = line.replace('\n', '').split('|')

或使用

filereader.read().splitlines()

代替filereader.readlines()

于 2013-02-13T11:14:43.917 回答