Задать вопрос
@radesd

Как подключить логику?

графический интрефейс есть и есть логика,но увы я непонимаю как эту логику подключить
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()
  • Вопрос задан
  • 97 просмотров
Подписаться 1 Простой 9 комментариев
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы