Загрузка данных
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() # Запускаем программу