From 989a9056e7f4ac10a10547103436451d0cb73afb Mon Sep 17 00:00:00 2001 From: Xatiko <107261855+Anymorexxx@users.noreply.github.com> Date: Mon, 25 Nov 2024 22:44:23 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5:=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=BE=20=D0=B3=D0=BB=D0=B0=D0=B2=D0=BD=D0=BE=D0=B5?= =?UTF-8?q?=20=D0=BC=D0=B5=D0=BD=D1=8E=20=D0=B8=D0=B3=D1=80=D1=8B,=20?= =?UTF-8?q?=D0=B0=20=D1=82=D0=B0=D0=BA=D0=B6=D0=B5=20=D0=BE=D0=B1=D0=BD?= =?UTF-8?q?=D0=BE=D0=B2=D0=BB=D0=B5=D0=BD=D0=B0=20=D1=81=D1=82=D1=80=D1=83?= =?UTF-8?q?=D0=BA=D1=82=D1=83=D1=80=D0=B0=20=D0=BF=D1=80=D0=BE=D0=B5=D0=BA?= =?UTF-8?q?=D1=82=D0=B0:=20=D0=BF=D0=BE=D0=BB=D1=8C=D0=B7=D0=BE=D0=B2?= =?UTF-8?q?=D0=B0=D1=82=D0=B5=D0=BB=D1=8C=D1=81=D0=BA=D0=B8=D0=B9=20=D0=B8?= =?UTF-8?q?=D0=BD=D1=82=D0=B5=D1=80=D1=84=D0=B5=D0=B9=D1=81=20=D1=80=D0=B0?= =?UTF-8?q?=D0=B7=D0=B4=D0=B5=D0=BB=D1=91=D0=BD=20=D0=BD=D0=B0=20=D0=BC?= =?UTF-8?q?=D0=BE=D0=B4=D1=83=D0=BB=D0=B8=20(main=5Fmenu,=20profile=5Fui,?= =?UTF-8?q?=20shop=5Fui,=20game=5Fui,=20knowledge=5Fui,=20common=5Fui),=20?= =?UTF-8?q?=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D0=B8=20=D0=B2=D1=8B=D0=BD?= =?UTF-8?q?=D0=B5=D1=81=D0=B5=D0=BD=D1=8B=20=D0=B2=20=D0=BE=D1=82=D0=B4?= =?UTF-8?q?=D0=B5=D0=BB=D1=8C=D0=BD=D1=8B=D0=B5=20=D1=84=D0=B0=D0=B9=D0=BB?= =?UTF-8?q?=D1=8B=20(=D0=BF=D0=BE=D0=BA=D0=B0=20=D1=87=D1=82=D0=BE=20?= =?UTF-8?q?=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D0=BE=D0=BD=D0=B0=D0=BB=20?= =?UTF-8?q?=D0=BD=D0=B5=20=D0=BD=D0=B0=D0=BF=D0=B8=D1=81=D0=B0=D0=BD,=20?= =?UTF-8?q?=D1=82=D0=BE=D0=BB=D1=8C=D0=BA=D0=BE=20=D0=B8=D0=BD=D1=82=D0=B5?= =?UTF-8?q?=D1=80=D1=84=D0=B5=D0=B9=D1=81=20=D0=B3=D0=BB=D0=B0=D0=B2=D0=BD?= =?UTF-8?q?=D0=BE=D0=B3=D0=BE=20=D0=BC=D0=B5=D0=BD=D1=8E).?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- __pycache__/config.cpython-313.pyc | Bin 777 -> 1171 bytes config.py | 18 +++- database/DogAcademy.db | Bin 32768 -> 32768 bytes logs/logfile.log | 93 ++++++++++++++++++ src/__pycache__/utils.cpython-313.pyc | Bin 2260 -> 2260 bytes src/ui/__pycache__/auth_ui.cpython-313.pyc | Bin 10171 -> 10127 bytes src/ui/__pycache__/user_ui.cpython-313.pyc | Bin 2628 -> 0 bytes src/ui/auth_ui.py | 3 +- src/ui/user_ui.py | 56 ----------- .../__pycache__/main_menu.cpython-313.pyc | Bin 0 -> 4606 bytes src/ui/user_ui/common_ui.py | 0 src/ui/user_ui/game_ui.py | 0 src/ui/user_ui/knowledge_ui.py | 0 src/ui/user_ui/main_menu.py | 93 ++++++++++++++++++ src/ui/user_ui/profile_ui.py | 0 src/ui/user_ui/shop_ui.py | 0 .../menu_functions.cpython-313.pyc | Bin 0 -> 787 bytes src/user_functions/game_functions.py | 0 src/user_functions/knowledge_functions.py | 0 src/user_functions/menu_functions.py | 0 src/user_functions/profile_functions.py | 0 src/user_functions/shop_functions.py | 0 src/utils.py | 3 +- 23 files changed, 206 insertions(+), 60 deletions(-) delete mode 100644 src/ui/__pycache__/user_ui.cpython-313.pyc delete mode 100644 src/ui/user_ui.py create mode 100644 src/ui/user_ui/__pycache__/main_menu.cpython-313.pyc create mode 100644 src/ui/user_ui/common_ui.py create mode 100644 src/ui/user_ui/game_ui.py create mode 100644 src/ui/user_ui/knowledge_ui.py create mode 100644 src/ui/user_ui/main_menu.py create mode 100644 src/ui/user_ui/profile_ui.py create mode 100644 src/ui/user_ui/shop_ui.py create mode 100644 src/user_functions/__pycache__/menu_functions.cpython-313.pyc create mode 100644 src/user_functions/game_functions.py create mode 100644 src/user_functions/knowledge_functions.py create mode 100644 src/user_functions/menu_functions.py create mode 100644 src/user_functions/profile_functions.py create mode 100644 src/user_functions/shop_functions.py diff --git a/__pycache__/config.cpython-313.pyc b/__pycache__/config.cpython-313.pyc index 27b3c8f741c4c0225ac115744c8e5c216f757caa..3b44c60099457c639fba5741e9904b97b5248030 100644 GIT binary patch delta 468 zcmeBVo6O1gnU|M~0SG3Xa7mA0pU5Y{STa%FS0|XiNGMpKNH|!qNF-RONEAqm1#=XM z2MZTT1d9|&28$L+1&b9)r;BS!OsrTJP{ppCl$@B9Y6@f|CR!#Xr+^qn$>x?uASshn z!$d<(rXnVwO)o`&1dJ^Q5-ICZh&p{Vh=^M`v&MApcN5mw0D? zAOE2E&|ue~TOuL;0r3Hjey%>qqLNObAtC;LP@#Yze>YDbSBM5NR4E_FNNnP+5uPE) z;$eRAA+8Z2$aZkL`TIfD@H%>~6fQD|7HI*E0|2g>gq{EZ delta 72 zcmbQt*~!NDnU|M~0SKmfxuox7p2#P`=rd8>mnEHFQ()qPbK;RXlKbqSJq;7DO-r2lPRfv(1dGbNEW=VL)e; delta 237 zcmeD8-|f%)nU|M~0SMkTx}>*maauuI{><_o(oY`C!L!rlw}F6_D3tZ-ouPn>%d}-!nb@ebIrSB}E%#4bk L7(ir^5>OKWwl!w< diff --git a/src/ui/__pycache__/user_ui.cpython-313.pyc b/src/ui/__pycache__/user_ui.cpython-313.pyc deleted file mode 100644 index 4b3c551e9c6594d2810e39bf101712831a873a1e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2628 zcmbtW-ES0C6u81fqvy=*Y}Z=k!D)N%x#ymb-#Pc5 zbGw{KL(pp+7`J{b3rG zNE_Ks6t06P{9e}AredCvg#}!sWWjAd*mvmY+v$N!>acof;MhRgO&m|Z^KM`IL~R*A zm>C=#NYz#?wbkHTLxVLIe`FvvnDveOBU4)}?*?L;jCdF+t1y&P*bYK@L_`IJhcToG zFou;7;0nv48_t+I?JJiTFxV_tvxF1k$8|0Gq2>Z|y>Cb=1U^ZIq=kULGViUC63G*p zNy(hc(^AQDn{uVRs%5pDK0cvp<+9sqo-BQ+Rse*W)6A2jC5`4#+SChUG!9m10tOR- zNRs5rNA`~#r=|DxtYwZI23vi;tr3%EM=HjMXQ*QIlqXzKRgI!ysjAyti?Ju*AYii{ zhDkD)Y`Ykl>*{$dZk`k4RZ((8>4~^~88%6_9waOx@aLst5E3(uVK?rgID9K%57&;L zkaTd3d=YQlj{2bnMvWX61D?Y4vKdmSrxxVBiyG|va~hMg>Qh*S>t!U;fMDG!5mfKf!@meOwZ!*#z1PgtxnZFLk2nm?#ir0 zdP7Av!>)-Z`oHkRo{MMm3XXtEZw;uG*~7?Xxc|bKkIRY5>!4#_wIAAd?Hl$F_6_H( zb5XKy+Yg+x_AO`9IcMLp?>J{9`w__8b1s6+L;EJm!Nxu3Qjg5I>}Y-vrjUNRtQB*W zO=$8<`yLp)X+Hq*TatYrq#rn+$-K*3`e}=902!AZ%e(wosc0>{21~HOm$lqP1xwJL zwZC&FeK@i}(WIwC@sudmksHpI#>c_m0v>n;@0ESox!`;Z4!=*y&2B7P&^4-#QEgmz zS?iQ596{2ra4ah~k*!dw7pO>YP^=&d-I=(dgB8mv6)DyQ#R768<$^Y$ z=Fu1ygS*aaDC3$@RLAvVMdoP}vIWbq3c4Hfq(?m?ZlX}imnxR(FHQ6UJw~E4q9N1G$IJr+CWw{%?{x-xVv_l@zj@p#W+XUkhtJn+5l(&305 zRk6zvyRKO_&bxmPk(SmO@v=AiW%#6KYL-Pkh8xc5 zrbSB=6abUPJYk=4TZ23`lo!51Cf4vI`7O5o^F6a&)tKzW^Op8!r@R&wbb-a|T6p)Uq>IW6AP}^xz)iHyb zR>3Ih#geMh769SZ5yeBL9^wtEYFe6QWL1pOfYQ@V5XJvoJnw$-;bTj2z(X~$;e0}t zSWein6x}K8Tsp>ZLgJ4oC-{gxNdOtPP8mf@r?d+c+)%bu95eD1?}Xn$>P^GzC7#wQ q$F6w55AF@RAJp&)nb_nOIfh|=BFUf0i6`X5pZp$1ULr7fkpBkE7DX=r diff --git a/src/ui/auth_ui.py b/src/ui/auth_ui.py index 88e76b7..7bfa52f 100644 --- a/src/ui/auth_ui.py +++ b/src/ui/auth_ui.py @@ -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) diff --git a/src/ui/user_ui.py b/src/ui/user_ui.py deleted file mode 100644 index 703daba..0000000 --- a/src/ui/user_ui.py +++ /dev/null @@ -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() diff --git a/src/ui/user_ui/__pycache__/main_menu.cpython-313.pyc b/src/ui/user_ui/__pycache__/main_menu.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ff6afd0b199979b56ce2602e6ed1ec1c9900e235 GIT binary patch literal 4606 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 literal 0 HcmV?d00001 diff --git a/src/ui/user_ui/common_ui.py b/src/ui/user_ui/common_ui.py new file mode 100644 index 0000000..e69de29 diff --git a/src/ui/user_ui/game_ui.py b/src/ui/user_ui/game_ui.py new file mode 100644 index 0000000..e69de29 diff --git a/src/ui/user_ui/knowledge_ui.py b/src/ui/user_ui/knowledge_ui.py new file mode 100644 index 0000000..e69de29 diff --git a/src/ui/user_ui/main_menu.py b/src/ui/user_ui/main_menu.py new file mode 100644 index 0000000..5c0e8d2 --- /dev/null +++ b/src/ui/user_ui/main_menu.py @@ -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("Переход в базу знаний...") diff --git a/src/ui/user_ui/profile_ui.py b/src/ui/user_ui/profile_ui.py new file mode 100644 index 0000000..e69de29 diff --git a/src/ui/user_ui/shop_ui.py b/src/ui/user_ui/shop_ui.py new file mode 100644 index 0000000..e69de29 diff --git a/src/user_functions/__pycache__/menu_functions.cpython-313.pyc b/src/user_functions/__pycache__/menu_functions.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..cce9cff590cd45a6aa74da1dde60c6da13c7c861 GIT binary patch literal 787 zcmaKpL2DC16vt;ai96fawAD*Y2wm{Bm)?3QB~_@s2t^DP!Np}srfW3WS!S~>y;Uzg z6r`6P#k03q3~ep_0N!Q^!7?X7KY*}bz&Gp0hM+#!dGG(;Z~t%DO=f3j5X6`Bb+3;R z`mV${K&O!?ua)vwY9XEd*`r!BPuxyKA8^jN zrOBKd1X2%av)5*RsQ#*H%GHe(`w?d^p&Q!k%yaHH-4^Zc*&%P*QAoM79r?fCu)EZc zuH{m&CvW@iPTO;P)afxNbLMm4tiEaZ9FBeTO)ni;L%n)MieE`JCe;zCT^aL78$+X# z_R29Sk4WWTy@x|%G39D8sg20uk5XCOsSitQf~+O50c~11-T49Wd62vWha{_A)`~i` W&ToNCuTzBLXAWbWXhnPvr|>TpxZv0T literal 0 HcmV?d00001 diff --git a/src/user_functions/game_functions.py b/src/user_functions/game_functions.py new file mode 100644 index 0000000..e69de29 diff --git a/src/user_functions/knowledge_functions.py b/src/user_functions/knowledge_functions.py new file mode 100644 index 0000000..e69de29 diff --git a/src/user_functions/menu_functions.py b/src/user_functions/menu_functions.py new file mode 100644 index 0000000..e69de29 diff --git a/src/user_functions/profile_functions.py b/src/user_functions/profile_functions.py new file mode 100644 index 0000000..e69de29 diff --git a/src/user_functions/shop_functions.py b/src/user_functions/shop_functions.py new file mode 100644 index 0000000..e69de29 diff --git a/src/utils.py b/src/utils.py index f6c0b15..b73ac70 100644 --- a/src/utils.py +++ b/src/utils.py @@ -16,7 +16,6 @@ def feature_in_development(frame): font=("Comic Sans MS", 16) ).pack(expand=True) - def create_tooltip(widget, text): """Создание подсказки для виджета.""" tooltip = tk.Toplevel() @@ -29,4 +28,4 @@ def create_tooltip(widget, text): tooltip.destroy() widget.bind("", lambda event: tooltip.deiconify()) - widget.bind("", hide_tooltip) \ No newline at end of file + widget.bind("", hide_tooltip)