Исправления:
1. База знаний + кнопка активна + данные взяты из конфига и бд 2. Изображения + нет абсолютных путей
This commit is contained in:
parent
9c5feb43af
commit
b5e3fd95b6
5 changed files with 2087 additions and 25 deletions
107
src/ui/user_ui/knowledge_ui.py
Normal file
107
src/ui/user_ui/knowledge_ui.py
Normal file
|
|
@ -0,0 +1,107 @@
|
|||
import os
|
||||
import tkinter as tk
|
||||
from PIL import Image, ImageTk
|
||||
from config import DOG_CHARACTERS, BASE_DIR
|
||||
from src.utils import clear_frame
|
||||
from database.info.Dogs_table import get_all_dogs
|
||||
|
||||
|
||||
def knowledge_ui(root, user_app):
|
||||
"""Интерфейс базы знаний о породах собак."""
|
||||
clear_frame(root)
|
||||
|
||||
# Загружаем данные о породах собак из базы данных
|
||||
dog_data = get_all_dogs()
|
||||
if not dog_data:
|
||||
tk.Label(root, text="Не удалось загрузить данные о породах.", font=("Arial", 20)).pack()
|
||||
return
|
||||
|
||||
index = {"current": 0} # Индекс текущей породы
|
||||
|
||||
def update_content():
|
||||
"""Обновляет содержимое для текущей породы."""
|
||||
current_dog = dog_data[index["current"]]
|
||||
breed = current_dog.breed
|
||||
|
||||
# Загружаем информацию из DOG_CHARACTERS
|
||||
dog_info = DOG_CHARACTERS.get(breed)
|
||||
if not dog_info:
|
||||
title_label.config(text="Нет данных о породе.")
|
||||
image_label.config(image=None)
|
||||
image_label.image = None
|
||||
characteristics_label.config(text="")
|
||||
behavior_label.config(text="")
|
||||
care_label.config(text="")
|
||||
admin_comments_label.config(text="")
|
||||
return
|
||||
|
||||
# Загружаем изображение
|
||||
image_path = dog_info["image"]
|
||||
if os.path.exists(image_path):
|
||||
image = Image.open(image_path)
|
||||
image = image.resize((200, 200), Image.Resampling.LANCZOS)
|
||||
photo = ImageTk.PhotoImage(image)
|
||||
image_label.config(image=photo)
|
||||
image_label.image = photo
|
||||
else:
|
||||
image_label.config(image=None)
|
||||
image_label.image = None
|
||||
|
||||
# Обновляем текст
|
||||
title_label.config(text=breed)
|
||||
characteristics_label.config(text=f"Характеристики: {current_dog.characteristics}")
|
||||
behavior_label.config(text=f"Поведение: {current_dog.behavior}")
|
||||
care_label.config(text=f"Уход: {current_dog.care_info}")
|
||||
admin_comments_label.config(text=f"Комментарии: {current_dog.admin_comments}")
|
||||
|
||||
def next_breed():
|
||||
"""Переход к следующей породе."""
|
||||
index["current"] = (index["current"] + 1) % len(dog_data)
|
||||
update_content()
|
||||
|
||||
def previous_breed():
|
||||
"""Переход к предыдущей породе."""
|
||||
index["current"] = (index["current"] - 1) % len(dog_data)
|
||||
update_content()
|
||||
|
||||
# Основной интерфейс
|
||||
frame = tk.Frame(root, bg="#f0f0f0")
|
||||
frame.pack(fill=tk.BOTH, expand=True)
|
||||
|
||||
title_label = tk.Label(frame, text="", font=("Arial", 20), bg="#f0f0f0")
|
||||
title_label.pack(pady=10)
|
||||
|
||||
image_label = tk.Label(frame, bg="#f0f0f0")
|
||||
image_label.pack(pady=10)
|
||||
|
||||
characteristics_label = tk.Label(frame, text="", font=("Arial", 14), bg="#f0f0f0", wraplength=600)
|
||||
characteristics_label.pack(pady=5)
|
||||
|
||||
behavior_label = tk.Label(frame, text="", font=("Arial", 14), bg="#f0f0f0", wraplength=600)
|
||||
behavior_label.pack(pady=5)
|
||||
|
||||
care_label = tk.Label(frame, text="", font=("Arial", 14), bg="#f0f0f0", wraplength=600)
|
||||
care_label.pack(pady=5)
|
||||
|
||||
admin_comments_label = tk.Label(frame, text="", font=("Arial", 14), bg="#f0f0f0", wraplength=600)
|
||||
admin_comments_label.pack(pady=5)
|
||||
|
||||
# Кнопки навигации
|
||||
btn_frame = tk.Frame(frame, bg="#f0f0f0")
|
||||
btn_frame.pack(pady=20)
|
||||
|
||||
back_button = tk.Button(
|
||||
btn_frame,
|
||||
text="Назад",
|
||||
font=("Arial", 14),
|
||||
command=lambda: [clear_frame(root), user_app.show_user_dashboard()]
|
||||
)
|
||||
back_button.pack(side=tk.LEFT, padx=5)
|
||||
|
||||
prev_button = tk.Button(btn_frame, text="Предыдущая", font=("Arial", 14), command=previous_breed)
|
||||
prev_button.pack(side=tk.LEFT, padx=5)
|
||||
|
||||
next_button = tk.Button(btn_frame, text="Следующая", font=("Arial", 14), command=next_breed)
|
||||
next_button.pack(side=tk.LEFT, padx=5)
|
||||
|
||||
update_content() # Инициализация первого отображения
|
||||
|
|
@ -8,6 +8,7 @@ import math
|
|||
|
||||
from config import EXIT_BUTTON_WIDTH, EXIT_BUTTON_HEIGHT, BUTTON_COLOR_EXIT
|
||||
from src.ui.user_ui.game_ui import GameUI
|
||||
from src.ui.user_ui.knowledge_ui import knowledge_ui
|
||||
from src.ui.user_ui.profile_ui import profile_ui
|
||||
from src.utils import clear_frame
|
||||
|
||||
|
|
@ -87,7 +88,8 @@ class UserApp:
|
|||
relief=tk.FLAT,
|
||||
padx=20,
|
||||
pady=10,
|
||||
state=tk.DISABLED # Делаем кнопку некликабельной
|
||||
state=tk.NORMAL, # Делаем кнопку активной
|
||||
command=lambda: knowledge_ui(self.root, self) # Подключаем knowledge_ui
|
||||
)
|
||||
knowledge_button.pack(side=tk.LEFT, padx=20)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue