Обновление: добавлено главное меню игры, а также обновлена структура проекта: пользовательский интерфейс разделён на модули (main_menu, profile_ui, shop_ui, game_ui, knowledge_ui, common_ui), функции вынесены в отдельные файлы (пока что функционал не написан, только интерфейс главного меню).
This commit is contained in:
parent
9b9b459d8f
commit
989a9056e7
23 changed files with 206 additions and 60 deletions
Binary file not shown.
Binary file not shown.
|
|
@ -3,7 +3,7 @@ from tkinter import messagebox
|
|||
from config import BACKGROUND_COLOR, PRIMARY_COLOR, BUTTON_COLOR, BUTTON_TEXT_COLOR, FONT, BIG_FONT, ADMIN_LOGIN, ADMIN_PASSWORD
|
||||
from src.ui.admin_ui import AdminApp # Импорт интерфейса администратора
|
||||
from database.db_events import create_user, check_user
|
||||
from src.ui.user_ui import UserApp
|
||||
from src.ui.user_ui.main_menu import UserApp
|
||||
|
||||
class DogAcademyApp:
|
||||
def __init__(self, root):
|
||||
|
|
@ -217,5 +217,6 @@ class DogAcademyApp:
|
|||
messagebox.showerror("Ошибка", "Пожалуйста, заполните все поля.")
|
||||
|
||||
def show_user_dashboard(self):
|
||||
self.clear_frame()
|
||||
"""Перейти к главному меню пользователя после авторизации."""
|
||||
UserApp(self.root, self)
|
||||
|
|
|
|||
|
|
@ -1,56 +0,0 @@
|
|||
import tkinter as tk
|
||||
from config import BACKGROUND_COLOR, PRIMARY_COLOR, BUTTON_COLOR, BUTTON_TEXT_COLOR, FONT
|
||||
|
||||
class UserApp:
|
||||
def __init__(self, root, dog_academy_app):
|
||||
self.root = root
|
||||
self.dog_academy_app = dog_academy_app # Сохраняем ссылку на DogAcademyApp
|
||||
self.show_user_dashboard()
|
||||
|
||||
def show_user_dashboard(self):
|
||||
"""Показать интерфейс пользователя."""
|
||||
self.clear_frame()
|
||||
self.current_frame = tk.Frame(self.root, bg=BACKGROUND_COLOR)
|
||||
self.current_frame.pack(expand=True)
|
||||
|
||||
# Заголовок
|
||||
title = tk.Label(
|
||||
self.current_frame,
|
||||
text="Главное меню",
|
||||
bg=BACKGROUND_COLOR,
|
||||
fg=PRIMARY_COLOR,
|
||||
font=FONT,
|
||||
)
|
||||
title.pack(pady=50)
|
||||
|
||||
# Кнопка "Играть"
|
||||
play_button = tk.Button(
|
||||
self.current_frame,
|
||||
text="Играть",
|
||||
bg=BUTTON_COLOR,
|
||||
fg=BUTTON_TEXT_COLOR,
|
||||
font=FONT,
|
||||
command=self.play_game,
|
||||
)
|
||||
play_button.pack(pady=20)
|
||||
|
||||
# Кнопка "Выход"
|
||||
logout_button = tk.Button(
|
||||
self.current_frame,
|
||||
text="Выход",
|
||||
bg=BUTTON_COLOR,
|
||||
fg=BUTTON_TEXT_COLOR,
|
||||
font=FONT,
|
||||
command=self.dog_academy_app.show_main_menu, # Вызываем метод из DogAcademyApp
|
||||
)
|
||||
logout_button.pack(pady=20)
|
||||
|
||||
def play_game(self):
|
||||
"""Запуск игры."""
|
||||
# TODO: Логика игры
|
||||
pass
|
||||
|
||||
def clear_frame(self):
|
||||
"""Очистить текущий фрейм."""
|
||||
if hasattr(self, 'current_frame') and self.current_frame:
|
||||
self.current_frame.destroy()
|
||||
BIN
src/ui/user_ui/__pycache__/main_menu.cpython-313.pyc
Normal file
BIN
src/ui/user_ui/__pycache__/main_menu.cpython-313.pyc
Normal file
Binary file not shown.
0
src/ui/user_ui/common_ui.py
Normal file
0
src/ui/user_ui/common_ui.py
Normal file
0
src/ui/user_ui/game_ui.py
Normal file
0
src/ui/user_ui/game_ui.py
Normal file
0
src/ui/user_ui/knowledge_ui.py
Normal file
0
src/ui/user_ui/knowledge_ui.py
Normal file
93
src/ui/user_ui/main_menu.py
Normal file
93
src/ui/user_ui/main_menu.py
Normal file
|
|
@ -0,0 +1,93 @@
|
|||
import tkinter as tk
|
||||
from config import (
|
||||
BACKGROUND_COLOR_USER,
|
||||
TOP_PANEL_COLOR_USER,
|
||||
BUTTON_COLOR_PROFILE_USER,
|
||||
BUTTON_COLOR_PLAY_USER,
|
||||
BUTTON_COLOR_EXIT_USER,
|
||||
BUTTON_TEXT_COLOR_USER,
|
||||
FONT_USER,
|
||||
BIG_FONT_USER,
|
||||
BUTTON_RADIUS_USER,
|
||||
EXIT_BUTTON_SIZE_USER,
|
||||
)
|
||||
|
||||
|
||||
class UserApp:
|
||||
def __init__(self, root, auth_ui):
|
||||
self.root = root
|
||||
self.auth_ui = auth_ui
|
||||
self.root.configure(bg=BACKGROUND_COLOR_USER)
|
||||
self.root.geometry("1920x1080") # Разрешение окна
|
||||
self.root.title("Собачья академия")
|
||||
print("Главное меню активно") # Лог при открытии меню
|
||||
self.show_user_dashboard()
|
||||
|
||||
def show_user_dashboard(self):
|
||||
"""Показать интерфейс пользователя."""
|
||||
# Верхняя панель
|
||||
top_panel = tk.Frame(self.root, bg=TOP_PANEL_COLOR_USER, height=100)
|
||||
top_panel.pack(fill=tk.X, side=tk.TOP)
|
||||
|
||||
# Кнопки на верхней панели
|
||||
for text, command in [("Профиль", self.show_profile), ("Магазин", self.show_shop), ("База знаний", self.show_knowledge)]:
|
||||
button = tk.Button(
|
||||
top_panel,
|
||||
text=text,
|
||||
bg=BUTTON_COLOR_PROFILE_USER,
|
||||
fg=BUTTON_TEXT_COLOR_USER,
|
||||
font=FONT_USER,
|
||||
relief=tk.FLAT,
|
||||
padx=20,
|
||||
pady=10,
|
||||
command=command,
|
||||
)
|
||||
button.pack(side=tk.LEFT, padx=20)
|
||||
|
||||
# Кнопка "Играть" в центре
|
||||
play_button = tk.Button(
|
||||
self.root,
|
||||
text="Играть",
|
||||
bg=BUTTON_COLOR_PLAY_USER,
|
||||
fg=BUTTON_TEXT_COLOR_USER,
|
||||
font=BIG_FONT_USER,
|
||||
relief=tk.FLAT,
|
||||
height=2,
|
||||
width=10,
|
||||
command=self.play_game,
|
||||
)
|
||||
play_button.place(relx=0.5, rely=0.5, anchor=tk.CENTER)
|
||||
|
||||
# Кнопка "Выход" в правом нижнем углу
|
||||
exit_button = tk.Button(
|
||||
self.root,
|
||||
text="Выход",
|
||||
bg=BUTTON_COLOR_EXIT_USER,
|
||||
fg=BUTTON_TEXT_COLOR_USER,
|
||||
font=FONT_USER,
|
||||
width=EXIT_BUTTON_SIZE_USER[0] // 10,
|
||||
height=EXIT_BUTTON_SIZE_USER[1] // 10,
|
||||
command=self.exit_app,
|
||||
)
|
||||
exit_button.place(relx=1.0, rely=1.0, x=-20, y=-20, anchor=tk.SE)
|
||||
|
||||
def play_game(self):
|
||||
"""Заглушка для игры."""
|
||||
print("Запуск игры...")
|
||||
|
||||
def exit_app(self):
|
||||
"""Заглушка для выхода."""
|
||||
print("Приложение закрыто")
|
||||
self.root.quit()
|
||||
|
||||
def show_profile(self):
|
||||
"""Заглушка для профиля."""
|
||||
print("Переход в профиль...")
|
||||
|
||||
def show_shop(self):
|
||||
"""Заглушка для магазина."""
|
||||
print("Переход в магазин...")
|
||||
|
||||
def show_knowledge(self):
|
||||
"""Заглушка для базы знаний."""
|
||||
print("Переход в базу знаний...")
|
||||
0
src/ui/user_ui/profile_ui.py
Normal file
0
src/ui/user_ui/profile_ui.py
Normal file
0
src/ui/user_ui/shop_ui.py
Normal file
0
src/ui/user_ui/shop_ui.py
Normal file
Loading…
Add table
Add a link
Reference in a new issue