Форум сайта python.su
Не создаётся новый файл, не могу найти ошибку
Текст ошибки:
Exception in Tkinter callback
Traceback (most recent call last):
File “C:\Users\Fedy\AppData\Local\Programs\Python\Python36\lib\tkinter\__init__.py”, line 1699, in __call__
return self.func(*args)
File “C:\Users\Fedy\Desktop\незаконченное123.py”, line 31, in <lambda>
reg = Button(root, text=“Зарегистрироваться”, overrelief=“sunken”, command = lambda: check())
File “C:\Users\Fedy\Desktop\незаконченное123.py”, line 97, in check
password()
File “C:\Users\Fedy\Desktop\незаконченное123.py”, line 117, in password
file = open(“logins.txt”, “rb”)
FileNotFoundError: No such file or directory: ‘logins.txt’
#coding: utf-8 from tkinter import * from tkinter import messagebox import pickle root = Tk() root.geometry("300x500") root.title("Вход/регистрация") def log (): global e2 global e3 global b2 global e global reg t = Label(root, text = "Зарегистрируйтесь для входа", font="Arial 16") t.pack() t1 = Label(root, text = "Логин:", font="Arial 10") t1.pack() e = Entry() e.pack() t2 = Label(root, text = "Пароль:", font="Arial 10") t2.pack() e2 = Entry(show="*") e2.pack() t3 = Label(root, text = "Повторите пароль:", font="Arial 10") t3.pack() e3 = Entry(show="*") e3.pack() reg = Button(root, text="Зарегистрироваться", overrelief="sunken", command = lambda: check()) reg.pack() b2 = Button(root, text="Раскрыть пароль", command = lambda: offe(), overrelief="sunken") b2.pack() def offe(): e2.config(show="") e3.config(show="") b2.config(command = lambda: offe2(), text="Раскрыть пароль") def offe2(): e2.config(show="*") e3.config(show="*") b2.config(command = lambda: offe(), text = "Скрыть пароль") def check(): if(e.get() == "" or e3.get() == "" or e2.get() == ""): messagebox.showwarning("Ошибка", "Вы должны заполнить все пустые поля.") if e.get() == "" and e2.get() == "" and e3.get() == "": e.config(bg="orange") e2.config(bg="orange") e3.config(bg="orange") elif e.get() == "" and e2.get() == "": e.config(bg="orange") e2.config(bg="orange") e3.config(bg="white") elif e.get() == "" and e3.get() == "": e.config(bg="orange") e3.config(bg="orange") e2.config(bg="white") elif e.get() == "": e.config(bg="orange") e2.config(bg="white") e3.config(bg="white") elif e2.get() == "" and e3.get() == "": e2.config(bg="orange") e3.config(bg="orange") e.config(bg="white") elif e2.get() == "" and e.get() == "": e2.config(bg="orange") e.config(bg="orange") e3.config(bg="white") elif e2.get() == "": e2.config(bg="orange") e.config(bg="white") e3.config(bg="white") elif e3.get() == "" and e.get() == "": e3.config(bg="orange") e.config(bg="orange") e2.config(bg="white") elif e3.get() == "" and e2.get() == "": e2.config(bg="orange") e3.config(bg="orange") e.config(bg="") elif e3.get() == "": e3.config(bg="orange") e2.config(bg="white") e.config(bg="white") else: if e3.get() == e2.get(): e.config(state=DISABLED) reg.config(state=DISABLED) e3.config(state=DISABLED) e2.config(state=DISABLED) b2.config(state=DISABLED) e.config(disabledbackground="white", disabledforeground="black") e3.config(disabledbackground="#32CD32", disabledforeground="black", show="*") e2.config(disabledbackground="#32CD32", disabledforeground="black", show="*") global save password() else: e3.config(state=NORMAL) e.config(bg="white") e2.config(state=NORMAL) e3.config(background="red") e2.config(background="red") messagebox.showerror("Ошибка", "Пароли не совпадают!") def save(): sev_pass = {'pass': e3.get()} sev_login = {'login': e.get()} file = open("logins.txt", "wb") pickle.dump(sev_pass, file) pickle.dump(sev_login, file) file.close() password() def password (): global sev_pass global sev_login file = open("logins.txt", "rb") sev_pass = pickle.load(file) sev_login = pickle.load(file) sev_pass, sev_login sev_pass = str(sev_pass) sev_login = str(sev_login) file.close() t1 = Label(root, text = "Вход в систему", font="Arial 16") t1.pack() global b2 global e1 global e21 global b21 t11 = Label(root, text = "Логин:", font="Arial 10") t11.pack() e1 = Entry() e1.pack() t21 = Label(root, text = "Пароль:", font="Arial 10") t21.pack() e21 = Entry(show="*") e21.pack() reg1 = Button(root, text="Вход", overrelief="sunken", command = lambda: logged()) reg1.pack() b21 = Button(root, text="Раскрыть пароль", command = lambda: offe1(), overrelief="sunken") b21.pack() def offe1(): e21.config(show="") b21.config(command = lambda: offe21(), text="Раскрыть пароль") def offe21(): e21.config(show="*") b21.config(command = lambda: offe1(), text = "Скрыть пароль") def logged(): if sev_pass == e21.get() and sev_login == e1.get(): success = Label(text = "Вы успешно вошли в аккаунт", fg ="green") success.pack() messagebox.showinfo("Успешно", "Вы вошли в аккаунт.") e1.config(disabledbackground="green") e21.config(disabledbackground="green") else: messagebox.showerror("Ошибка", "Неверный логин/пароль!") e1.config(background="red") e21.config(background="red") log() root.mainloop()
Отредактировано Fedy1661 (Ноя. 4, 2017 07:57:53)
Офлайн
Читайте что означают ключи открытия файла “rb”. Файл и не должен создаваться.
А вообще общий совет. Читайте сообщения интерпретатора, там именно об этом и написано.
Отредактировано doza_and (Ноя. 4, 2017 08:17:56)
Офлайн
doza_andА в чем конкретно ошибка в коде?
ключи открытия файла “rb”
Офлайн
Fedy1661Конкретно в том, что rb - это READ BINARY, если вы открываете файл для чтения, на кой фиг ему создаваться?
А в чем конкретно ошибка в коде?
Офлайн
FishHookЕсть функция save
def save(): sev_pass = {'pass': e3.get()} sev_login = {'login': e.get()} file = open("logins.txt", "wb") pickle.dump(sev_pass, file) pickle.dump(sev_login, file) file.close() password()
Отредактировано Fedy1661 (Ноя. 4, 2017 08:30:08)
Офлайн
Fedy1661
Что вы хотели этим сказать?
Офлайн
FishHookВ этой функции есть wb, т.е файл должен создаться…
Fedy1661Что вы хотели этим сказать?
Офлайн
Fedy1661в том что прежде чем открыть файл нужно убедиться что он есть или создать его. я не вникал в ваш код но мне кажется что у вас кнопка зарегистриров. вызывает функцию def check() а создание файла и сохранение идет в def save() но она не вызывается из def check() а наверно надо reg = Button(root, text=“Зарегистрироваться”, overrelief=“sunken”, command = lambda: save())
А в чем конкретно ошибка в коде?
Отредактировано marvellik (Ноя. 4, 2017 08:35:40)
Офлайн
marvellikСпасибо большое. Но программа при проверке логина и пароля пишет, что он неверный
Отредактировано Fedy1661 (Ноя. 4, 2017 08:36:37)
Офлайн
Fedy1661сорри не увидел
Офлайн