Загрузка данных


import tkinter as tk
from tkinter import messagebox

# ==========================================
# 1. СОЗДАЕМ ГЛАВНОЕ ОКНО
# ==========================================
root = tk.Tk()
root.title("Приложение")
root.geometry("600x750")
root.configure(bg="#1E3A8A") # Темно-синий фон
root.resizable(width=False, height=False)

# ==========================================
# 2. СОЗДАЕМ ФРЕЙМ ДЛЯ АВТОРИЗАЦИИ
# ==========================================
login_frame = tk.Frame(root, bg="#1E3A8A")

# Заголовок
tk.Label(login_frame, text="Авторизация", font=("Arial", 24, "bold"), 
         bg="#1E3A8A", fg="yellow").pack(pady=30)

# Поля ввода
tk.Label(login_frame, text="Логин", font=("Arial", 14), bg="#1E3A8A", fg="white").pack(pady=5)
entry_login = tk.Entry(login_frame, width=30, font=("Arial", 12))
entry_login.pack(pady=5)

tk.Label(login_frame, text="Пароль", font=("Arial", 14), bg="#1E3A8A", fg="white").pack(pady=5)
entry_password = tk.Entry(login_frame, width=30, show="*", font=("Arial", 12))
entry_password.pack(pady=5)

# ==========================================
# 3. СОЗДАЕМ ФРЕЙМ ДЛЯ ЛИЧНОГО КАБИНЕТА
# ==========================================
main_frame = tk.Frame(root, bg="#1E3A8A")

# Заголовок
tk.Label(main_frame, text="Личный кабинет", font=("Arial", 28, "bold"), 
         bg="#1E3A8A", fg="white").pack(pady=20)

# Кнопка "Жанры" (просто для красоты, как на фото)
tk.Button(main_frame, text="Жанры", width=25, bg="yellow", fg="black", 
          font=("Arial", 14, "bold"), relief="flat").pack(pady=10)

# --- ФРЕЙМ ДЛЯ КНИГ (Вложенный фрейм) ---
books_frame = tk.Frame(main_frame, bg="#1E3A8A")
books_frame.pack(pady=20)

selected_genre = tk.StringVar(value="Фантастика")

# Функция загрузки картинок (без Pillow)
def load_img(path):
    try:
        img = tk.PhotoImage(file=path)
        # Если картинки большие, раскомментируйте строчку ниже и подберите число (2, 3, 4...)
        # img = img.subsample(2, 2) 
        return img
    except:
        print(f"Ошибка: Не найден файл {path}")
        return None

# Загружаем картинки (замените названия на свои)
img1 = load_img("book1.png")
img2 = load_img("book2.png")
img3 = load_img("book3.png")

books_data = [
    {"img": img1, "title": "Фантастика", "val": "Фантастика"},
    {"img": img2, "title": "Детектив", "val": "Детектив"},
    {"img": img3, "title": "История", "val": "История"}
]

# Рисуем книги внутри фрейма books_frame
for book in books_data:
    frame = tk.Frame(books_frame, bg="#1E3A8A")
    frame.pack(side=tk.LEFT, padx=15)

    if book["img"]:
        img_label = tk.Label(frame, image=book["img"], bg="white", borderwidth=2, relief="solid")
        img_label.image = book["img"] 
        img_label.pack()
    else:
        tk.Label(frame, text="Нет фото", width=12, height=8, bg="gray", fg="white").pack()

    tk.Radiobutton(frame, text=book["title"], variable=selected_genre, value=book["val"],
                   bg="#1E3A8A", fg="white", selectcolor="#1E3A8A",
                   activebackground="#1E3A8A", activeforeground="white",
                   font=("Arial", 12)).pack(pady=10)

# Кнопка "Выбрать жанр"
def choose_genre():
    messagebox.showinfo("Выбор жанра", f"Вы выбрали жанр: {selected_genre.get()}")

tk.Button(main_frame, text="Выбрать жанр", width=30, bg="yellow", fg="black", 
          font=("Arial", 14, "bold"), relief="flat", 
          command=choose_genre).pack(pady=20)

# Адрес доставки
tk.Label(main_frame, text="Адрес доставки:", bg="#1E3A8A", fg="white", 
         font=("Arial", 14)).pack(anchor="w", padx=60, pady=5)

entry_address = tk.Entry(main_frame, width=50, font=("Arial", 14))
entry_address.pack(pady=5)

# Кнопка "Заказать книгу"
def order_book():
    genre = selected_genre.get()
    address = entry_address.get()
    
    if address == "":
        messagebox.showwarning("Ошибка", "Введите адрес доставки!")
    else:
        messagebox.showinfo("Успех", f"Книга в жанре '{genre}' заказана!\nАдрес: {address}")

tk.Button(main_frame, text="Заказать Книгу", width=30, bg="yellow", fg="black", 
          font=("Arial", 14, "bold"), relief="flat", 
          command=order_book).pack(pady=30)


# ==========================================
# 4. ЛОГИКА ПЕРЕКЛЮЧЕНИЯ ФРЕЙМОВ
# ==========================================
def authorization():
    login = entry_login.get()
    password = entry_password.get()

    if login == "" or password == "":
        messagebox.showwarning("Ошибка", "Заполните логин и пароль")
        return
    
    # 1. Скрываем фрейм авторизации
    login_frame.pack_forget()
    
    # 2. Показываем фрейм личного кабинета
    main_frame.pack(fill="both", expand=True)

# Привязываем функцию к кнопке "Вход"
tk.Button(login_frame, text="Вход", width=20, command=authorization, 
          bg="yellow", fg="black", font=("Arial", 12, "bold"),
          activebackground="orange", activeforeground="black", relief="flat").pack(pady=30)


# ==========================================
# 5. ЗАПУСК (Показываем сначала окно входа)
# ==========================================
login_frame.pack(fill="both", expand=True) # Показываем фрейм входа
root.mainloop() # Запускаем программу