графический интрефейс есть и есть логика,но увы я непонимаю как эту логику подключить
import tkinter
import glob
import hashlib
import json
import os.path
import tkinter.messagebox
from tkinter import messagebox
from tkinter import *
pas="admin"
log="admin"
f = "Регистрация"
USERS_DIR = 'users'
def password_hash(password: str) -> str:
hashed = password_hash('admin')
hashed == 'admin'
password_hash('adm1n') == hashed
password_hash('admin') == hashed
return hashlib.sha256(password.encode()).hexdigest()
def is_valid_sign_in(login: str, password: str) -> bool:
"""
Функция для проверки правильности входа, если вернёт False,
значит нужно вывести что-то вроде 'Неправильный логин или пароль!'
Иначе, показать профиль пользователя.
"""
users = load_users()
if login not in users:
return False
return password_hash(password) == users[login]['password']
def init_admin():
if not os.path.isfile(os.path.join(USERS_DIR, 'admin.json')):
create_user('admin',
password='admin',
phone='0000000000',
email='admin@mail.ru',
full_name='Админов Админ Админович',
birthday='13.12.99'
)
def create_user(login: str, password: str, phone: str, email: str, full_name: str, birthday: str):
if not os.path.isdir(USERS_DIR):
os.mkdir(USERS_DIR)
save_user(login, {
'password': password_hash(password),
'phone': phone,
'email': email,
'full_name': full_name,
'birthday': birthday,
})
def save_user(login: str, user: dict[str, str]):
"""
Сохранит пользователя в файл, формата json.
json - всего лишь один из множества форматов хранения данных, он похож на python'овские словари и списки.
Можно использовать любой другой формат, например yaml или даже ini-файл.
"""
with open(os.path.join(USERS_DIR, f'{login}.json'), 'w') as f:
json.dump(user, f)
def load_users() -> dict[str, dict[str, str]]:
"""
Возвращает всех существующих пользователей, создаёт админа, если надо.
Вернёт словарь, ключами которого являются логины, а значениями информация пользователя.
Что бы её обновлять см. save_user
"""
init_admin()
users = {}
for username in glob.iglob(f'{USERS_DIR}/*.json'):
with open(username) as user_file:
users[os.path.basename(username).casefold()] = json.load(user_file)
return users
#все что выше это и есть логика программы
def save_file():
global file_name
data =text.get('1.0', tkinter.END)
out = open(file_name, 'w')
out.write(data)
out.close()
def menu():
Regw.destroy()
menu = tkinter.Tk()
menu.title("Notepad")
menu.minsize(width=500, height=500)
menu.maxsize(width=500, height=500)
global text
text = tkinter.Text(menu, width=400, height=400, wrap="word")
scrollb = Scrollbar(menu, orient=VERTICAL, command=text.yview)
scrollb.pack(side="right", fill="y")
text.configure(yscrollcommand=scrollb.set)
text.pack()
menuBar = tkinter.Menu(menu)
menuBar.add_command(label="Save", command=save_file)
menuBar.add_cascade(label="Exit", command=root.quit)
menu.config(menu=menuBar)
menu.mainloop()
def e():
messagebox.showinfo("Успех","Поздравляю!Вы успешно зарегестрировались")
def p():
root.destroy()
global Regw
Regw = Tk()
Regw.title(f)
Regw.geometry('450x490')
Regw.resizable(width=False, height=False)
Regw['bg'] = 'black'
tw=Label(Regw,text="Регистрация",font='Arial 25 bold', bg='black', fg='white')
tw.pack()
text1=Label(text="Логин",font='Arial 11 bold', bg='black', fg='white')
text1.pack()
entry1=Entry(Regw,bg='black', fg='lime', font='Arial 20')
entry1.pack()
text2 = Label(text="Пароль", font='Arial 11 bold', bg='black', fg='white')
text2.pack()
entry2 = Entry(Regw, bg='black', fg='lime', font='Arial 20')
entry2.pack()
text3 = Label(text="Номер телефона", font='Arial 11 bold', bg='black', fg='white')
text3.pack()
entry3 = Entry(Regw, bg='black', fg='lime', font='Arial 20')
entry3.pack()
text4 = Label(text="Электронная почта", font='Arial 11 bold', bg='black', fg='white')
text4.pack()
entry4 = Entry(Regw, bg='black', fg='lime', font='Arial 20')
entry4.pack()
text5 = Label(text="ФИО", font='Arial 11 bold', bg='black', fg='white')
text5.pack()
entry5 = Entry(Regw, bg='black', fg='lime', font='Arial 20')
entry5.pack()
text6 = Label(text="Дата рождения", font='Arial 11 bold', bg='black', fg='white')
text6.pack()
entry6 = Entry(Regw, bg='black', fg='lime', font='Arial 20')
entry6.pack()
btn = Button(Regw, text='Далее',width=20,command=menu)
btn.pack(padx=10,pady=15)
root = Tk()
root.title('Авторизация')
root.geometry('450x230')
root.resizable(width=False, height=False)
root['bg'] = 'black'
main_label = Label(root, text='Авторизация', font='Arial 15 bold', bg='black', fg='white')
main_label.pack()
username_label = Label(root, text='логин', font='Arial 11 bold', bg='black', fg='white', padx=10, pady=8)
username_label.pack()
username_entry = Entry(root, bg='black', fg='lime', font='Arial 12')
username_entry.pack()
password_label = Label(root, text='Пароль', font='Arial 11 bold', bg='black', fg='white', padx=10, pady=8)
password_label.pack()
password_entry = Entry(root, bg='black', fg='lime', font='Arial 12')
password_entry.pack()
send_btn = Button(root, text='Войти', command=menu)
send_btn.pack(padx=10, pady=8)
p=Button(root,text="Создать аккаунт/вход",command=p)
p.pack(padx=10,pady=10)
root.mainloop()