Изменения: исправлена проблема с зависанием и необходимостью принудительного завершения работы программы, некоторый функционал внесён в разработку с сообщением 'функционал недоступен', исправлена ошибка бургер-меню (теперь нажатие на определённую кнопку вызывает определённую функцию), функция feature_in_development вынесена в utils.py.
This commit is contained in:
parent
e01f43dc35
commit
9b9b459d8f
26 changed files with 1054 additions and 113 deletions
Binary file not shown.
Binary file not shown.
|
|
@ -1,11 +1,8 @@
|
|||
import tkinter as tk
|
||||
from PIL import Image, ImageTk
|
||||
from config import SETTINGS_IMG
|
||||
from src.admin_functions import db_management, admin_logging, statistics, content, knowledge_base
|
||||
from src.utils import clear_frame # Импортируем общую функцию для очистки фрейма
|
||||
from database.db_session import get_session
|
||||
from database.models import Notifications
|
||||
from src.admin_functions.notification import Notification
|
||||
from src.admin_functions import admin_logging, statistics
|
||||
from src.utils import clear_frame, feature_in_development # Импортируем общую функцию для очистки фрейма
|
||||
|
||||
|
||||
# Конфигурация цветов из config.py
|
||||
|
|
@ -17,26 +14,12 @@ MENU_COLOR = "#2f2b38"
|
|||
MENU_OPACITY = 0.9 # Прозрачность меню
|
||||
|
||||
class AdminApp:
|
||||
def __init__(self, root, master):
|
||||
def __init__(self, root):
|
||||
self.root = root
|
||||
self.master = master
|
||||
self.root.title("Админ-Панель")
|
||||
self.root.geometry("1920x1080")
|
||||
self.root.config(bg=BACKGROUND_COLOR)
|
||||
|
||||
self.notification = Notification(self.master)
|
||||
|
||||
def edit_database(self):
|
||||
# Логика редактирования базы данных
|
||||
# Например, успешное редактирование
|
||||
self.notification.show_info("Успех", "База данных успешно обновлена!")
|
||||
|
||||
def show_error(self, message):
|
||||
self.notification.show_error("Ошибка", message)
|
||||
|
||||
def show_warning(self, message):
|
||||
self.notification.show_warning("Предупреждение", message)
|
||||
|
||||
# Верхняя панель
|
||||
self.top_bar = tk.Frame(self.root, bg=TOP_BAR_COLOR, height=60)
|
||||
self.top_bar.pack(side="top", fill="x")
|
||||
|
|
@ -72,7 +55,7 @@ class AdminApp:
|
|||
activebackground=BUTTON_COLOR,
|
||||
activeforeground=TEXT_COLOR,
|
||||
bd=0,
|
||||
command=self.toggle_menu # Проверьте, что эта команда правильно привязана
|
||||
command=self.toggle_menu
|
||||
)
|
||||
self.menu_button.pack(side="right", padx=10, pady=10)
|
||||
|
||||
|
|
@ -82,9 +65,9 @@ class AdminApp:
|
|||
|
||||
# Бургер-меню (скрытое по умолчанию)
|
||||
self.menu_frame = tk.Frame(self.root, bg=MENU_COLOR, width=300)
|
||||
self.menu_frame.place(x=1620, y=60, width=300, height=1020) # Явно задаём ширину и высоту
|
||||
self.menu_frame.lower() # Прячем меню
|
||||
self.menu_visible = False # Добавлен флаг для отслеживания состояния меню
|
||||
self.menu_frame.place(x=1620, y=60, width=300, height=1020)
|
||||
self.menu_frame.lower()
|
||||
self.menu_visible = False
|
||||
|
||||
def toggle_menu(self):
|
||||
"""Показ или скрытие меню."""
|
||||
|
|
@ -104,23 +87,23 @@ class AdminApp:
|
|||
# Список разделов и их элементов
|
||||
menu_sections = [
|
||||
("Работа с базой данных", [
|
||||
("Редактирование пользователей", db_management.edit_users),
|
||||
("Управление вопросами", db_management.manage_questions),
|
||||
("Просмотр таблиц", db_management.view_tables),
|
||||
("Редактирование пользователей", feature_in_development),
|
||||
("Управление вопросами", feature_in_development),
|
||||
("Просмотр таблиц", feature_in_development),
|
||||
]),
|
||||
("Управление игровым контентом", [
|
||||
("Создание и настройка уровней", content.manage_levels),
|
||||
("Настройка параметров собаки", content.manage_dog_params),
|
||||
("Создание и настройка уровней", feature_in_development),
|
||||
("Настройка параметров собаки", feature_in_development),
|
||||
]),
|
||||
("Управление интерфейсом пользователя", [
|
||||
("Добавление подсказок в интерфейс", self.manage_ui_tips),
|
||||
("Добавление подсказок в интерфейс", feature_in_development),
|
||||
]),
|
||||
("Работа с базой знаний", [
|
||||
("Добавление информации", knowledge_base.add_info),
|
||||
("Редактирование записей", knowledge_base.edit_records),
|
||||
("Удаление записей", knowledge_base.delete_records),
|
||||
("Просмотр базы знаний", knowledge_base.view_knowledge_base),
|
||||
("Генерация вопросов", knowledge_base.generate_questions),
|
||||
("Добавление информации", feature_in_development),
|
||||
("Редактирование записей", feature_in_development),
|
||||
("Удаление записей", feature_in_development),
|
||||
("Просмотр базы знаний", feature_in_development),
|
||||
("Генерация вопросов", feature_in_development),
|
||||
]),
|
||||
]
|
||||
|
||||
|
|
@ -143,19 +126,15 @@ class AdminApp:
|
|||
total_height = 0
|
||||
|
||||
for title, items in menu_sections:
|
||||
# Заголовок раздела
|
||||
section_label = tk.Label(
|
||||
self.menu_frame,
|
||||
text=title,
|
||||
bg=MENU_COLOR,
|
||||
fg=TEXT_COLOR,
|
||||
font=("Comic Sans MS", 14, "bold"),
|
||||
anchor="center" # Выравнивание по центру
|
||||
)
|
||||
section_label.pack(fill="x", padx=10, pady=5)
|
||||
total_height += button_height + section_spacing
|
||||
|
||||
# Кнопки раздела
|
||||
for text, command in items:
|
||||
item_button = tk.Button(
|
||||
self.menu_frame,
|
||||
|
|
@ -163,19 +142,12 @@ class AdminApp:
|
|||
bg=BUTTON_COLOR,
|
||||
fg=TEXT_COLOR,
|
||||
font=("Comic Sans MS", 12),
|
||||
width=int(menu_width / 10) - 3, # Ширина кнопок зависит от ширины меню
|
||||
height=1,
|
||||
activebackground=BUTTON_COLOR,
|
||||
activeforeground=TEXT_COLOR,
|
||||
bd=0,
|
||||
anchor="w", # Выравнивание текста по левому краю
|
||||
command=lambda: command(self.main_frame) # Вызываем функцию и передаём фрейм
|
||||
command=lambda cmd=command: cmd(self.main_frame) # Передаём фрейм
|
||||
)
|
||||
item_button.pack(fill="x", padx=20, pady=5)
|
||||
total_height += button_height + button_spacing
|
||||
|
||||
# Подстройка высоты меню
|
||||
self.menu_frame.config(height=total_height)
|
||||
|
||||
def create_menu_section(self, title, items):
|
||||
section_label = tk.Label(self.menu_frame, text=title, bg=MENU_COLOR, fg=TEXT_COLOR, font=("Comic Sans MS", 14, "bold"))
|
||||
|
|
@ -218,18 +190,26 @@ class AdminApp:
|
|||
tk.Label(frame, text="Здесь будут подсказки для интерфейса", bg=BACKGROUND_COLOR, fg=TEXT_COLOR, font=("Comic Sans MS", 16)).pack()
|
||||
|
||||
def show_notifications(self, frame):
|
||||
"""Отображение экрана уведомлений"""
|
||||
clear_frame(frame) # Очищаем текущий экран
|
||||
session = get_session()
|
||||
notifications = session.query(Notifications).filter_by(
|
||||
is_read=0).all() # Получаем все непрочитанные уведомления
|
||||
for notification in notifications:
|
||||
tk.Label(frame, text=notification.message, bg=BACKGROUND_COLOR, fg=TEXT_COLOR,
|
||||
font=("Comic Sans MS", 16)).pack()
|
||||
session.close()
|
||||
tk.Label(
|
||||
frame,
|
||||
text="Модуль <Уведомления> в разработке.\nВ планах реализовать: создание оповещений для пользователей (обновления, новости), сообщения от БД (корректность работы)",
|
||||
bg=BACKGROUND_COLOR,
|
||||
fg=TEXT_COLOR,
|
||||
font=("Comic Sans MS", 16)
|
||||
).pack(expand=True)
|
||||
|
||||
def show_security(self, frame):
|
||||
clear_frame(frame)
|
||||
tk.Label(frame, text="Раздел Безопасность", bg=BACKGROUND_COLOR, fg=TEXT_COLOR, font=("Comic Sans MS", 16)).pack()
|
||||
"""Отображение экрана безопасности"""
|
||||
clear_frame(frame) # Очищаем текущий экран
|
||||
tk.Label(
|
||||
frame,
|
||||
text="Модуль <Безопасность> в разработке.\nВ планах реализовать: управление доступом (создание других админов, смена пароля администратора).",
|
||||
bg=BACKGROUND_COLOR,
|
||||
fg=TEXT_COLOR,
|
||||
font=("Comic Sans MS", 16)
|
||||
).pack(expand=True)
|
||||
|
||||
def change_ui_settings(self, frame):
|
||||
clear_frame(frame)
|
||||
|
|
|
|||
|
|
@ -219,4 +219,3 @@ class DogAcademyApp:
|
|||
def show_user_dashboard(self):
|
||||
"""Перейти к главному меню пользователя после авторизации."""
|
||||
UserApp(self.root, self)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue