2013-02-13 1 views
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 

У меня есть код выше для случая, когда пользователь нажал кнопку входа, Im, используя записную книжку в качестве базы данных, и это данные внутриTkinter Войти с помощью блокнота в качестве базы данных

пользователя | 1234
Администратор | 1234

Я думаю, что мои коды правильные, но когда я запускаю его, он всегда говорит неверно, даже если я ввел правильные данные. Не могли бы вы помочь мне определить мои ошибки.

ответ

2

Вы должны иметь возможность использовать простой оператор print для вывода значений, которые вы читаете из файла, и сравнить их с тем, что вы действительно ввели.


Поскольку .readlines() не раздеть разрывы строк, строки/пароли, считанных из файла всегда заканчиваются \n характер.

Вы должны удалить это; простой способ это просто позвонить replace('\n', '') или rstrip('\n'):

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

или использовать

filereader.read().splitlines() 

вместо filereader.readlines()

Смежные вопросы