import tkinter as tk from constants import FONT, FONT_LARGE, MAIN_VIEW_NAME, PROJECTS_VIEW_NAME, PROFILE_VIEW_NAME from views.profile_view import ProfileView from views.project_view import ProjectView from views.projects_add_view import ProjectsAddView from views.projects_view import ProjectsView from views.abstract_view import AbstractView class MainView(tk.Frame, AbstractView): def __init__(self, parent, controller): tk.Frame.__init__(self, parent) self.frames = {} self.token = '' for F in (ProfileView, ProjectsView, ProjectsAddView, ProjectView): frame = F(parent, controller, self) self.frames[F.get_view_name()] = frame frame.grid(row=0, column=0, sticky="nsew") label = tk.Label(self, text="SmartPicasso", font=FONT_LARGE) label.pack(pady=10, padx=10) label_u = tk.Label(self, text="Main menu", font=FONT) label_u.pack(pady=10, padx=10) button_projects = tk.Button(self, text="Projects", font=FONT, command=lambda: self.show_frame(PROJECTS_VIEW_NAME)) button_projects.pack() button_profile = tk.Button(self, text="My profile", font=FONT, command=lambda: self.show_frame(PROFILE_VIEW_NAME)) button_profile.pack() @staticmethod def get_view_name() -> str: return MAIN_VIEW_NAME def show_frame(self, view): frame = self.frames[view] frame.tkraise() if self.token: print(self.token) frame.token = self.token frame.start()