2016-02-26 2 views
1

Проблема, с которой я столкнулась с этим кодом, заключается в том, что программа не будет писать и проверять регистрационный ключ в одном экземпляре программы. Если я введу правильный пароль, который соответствует переменной goodKey, текстовый файл будет перезаписан, но мне придется перезапустить программу, прежде чем программа узнает, что ключ прав, а затем запускает оставшуюся часть программы. Код был бы идеальным, если бы мне не пришлось повторно запускать модуль, чтобы попасть в основную программу.Проблема с чтением текстового файла в том же программном экземпляре

класс регистровое окно:

def __init__(self): 
     print('Class: Register Window') 


     registerWindow=Tk() 
     registerWindow.resizable(0, 0) 
     registerWindowTitle=registerWindow.title('Register Your Software...') 
     registerWindowSize=registerWindow.geometry('300x100') 


     #Code Entry 
     labelName_RegisterCode=Label(registerWindow, text='Enter Your Registration Code:') 
     labelName_RegisterCode.grid(row=1, column=0) 

     entryBox_RegisterCode=Entry(registerWindow, width=16, bg='red') 
     entryBox_RegisterCode.grid(row=1, column=1) 


     goodKey=('password') 


     def registerNow(registerWindow, goodKey): 
      print('Class: Register Window >> Module: Register Now') 


      button_RegisterCode=Button(registerWindow, text='Submit', width=8, height=2, command=lambda: writeKey(registerWindow, goodKey)) 
      button_RegisterCode.place(x=220, y=50) 


     def writeKey(registerWindow, goodKey): 
      print('Class: Register Window >> Module: Write Key') 


      text_EnteredCode=open('key.txt', 'w') 
      text_EnteredCode.write(str(entryBox_RegisterCode.get())) 
      text_EnteredCode.close 
      keys(registerWindow, goodKey) 


     def keys(registerWindow, goodKey): 
      print('Class: Register Window >> Module: Keys') 


      text_RegisterCodeCheck=open('key.txt', 'r') 
      print(text_RegisterCodeCheck) 


      if text_RegisterCodeCheck.readline() == goodKey: 


       text_RegisterCodeCheck.close 
       print('Your key is valid') 
       registerWindow.destroy() 
       mainWindowSetup() 


      else: 
       registerNow(registerWindow, goodKey) 


     keys(registerWindow, goodKey) 

ответ

1

Похоже, ваш файл не может быть получение закрыт из-за опечатки в пути закрытия функция вызывается.

text_EnteredCode.close 

должен быть

text_EnteredCode.close() 

Это должно решить проблему, что вы столкнулись.

+0

Ничего себе, это работает! Я не могу поверить, что это было так просто! Я попытался вынуть команды для закрытия текстовых файлов, но он вернулся к тому же вопросу. Нужно ли закрывать текстовый файл после каждого чтения или записи? – Pyguy

+0

Вы можете выполнить поиск(), чтобы сбросить указатель на запись после завершения записи. –

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