Frame switching system done
This commit is contained in:
@@ -1,8 +1,24 @@
|
||||
import tkinter as tk
|
||||
from tkinter import ttk
|
||||
from controller.Frames import Frames
|
||||
from controller.HomeController import HomeController
|
||||
|
||||
class View(ttk.Frame):
|
||||
def __init__(self, parent):
|
||||
class HomeView(ttk.Frame):
|
||||
"""
|
||||
View - MainWindow
|
||||
|
||||
dec...
|
||||
|
||||
@author Jérémi Nihart / EndMove
|
||||
@link https://git.endmove.eu/EndMove/WebPicDownloader
|
||||
@version 1.0.0
|
||||
@since 2022-08-30
|
||||
"""
|
||||
# Variables
|
||||
__controller: HomeController = None
|
||||
|
||||
# Constructor
|
||||
def __init__(self, parent, controller: HomeController):
|
||||
super().__init__(parent)
|
||||
|
||||
# create widgets
|
||||
@@ -16,62 +32,21 @@ class View(ttk.Frame):
|
||||
self.email_entry.grid(row=1, column=1, sticky=tk.NSEW)
|
||||
|
||||
# save button
|
||||
self.save_button = ttk.Button(self, text='Save', command=self.save_button_clicked)
|
||||
self.save_button = ttk.Button(self, text='Save', command=self.event_btn)
|
||||
self.save_button.grid(row=1, column=3, padx=10)
|
||||
|
||||
# message
|
||||
self.message_label = ttk.Label(self, text='', foreground='red')
|
||||
self.message_label = ttk.Label(self, text='coucou toi :D JE SUIS SUPER MAN héhéh', foreground='red')
|
||||
self.message_label.grid(row=2, column=1, sticky=tk.W)
|
||||
|
||||
self.grid(row=0, column=0, padx=10, pady=10)
|
||||
# place this frame
|
||||
# self.grid(row=0, column=0, padx=5, pady=5)
|
||||
# self.pack(fill='both', expand=True)
|
||||
|
||||
# set the controller
|
||||
self.controller = None
|
||||
# Save and setup main controller
|
||||
self.__controller = controller
|
||||
controller.set_view(self)
|
||||
|
||||
def set_controller(self, controller):
|
||||
"""
|
||||
Set the controller
|
||||
:param controller:
|
||||
:return:
|
||||
"""
|
||||
self.controller = controller
|
||||
|
||||
def save_button_clicked(self):
|
||||
"""
|
||||
Handle button click event
|
||||
:return:
|
||||
"""
|
||||
if self.controller:
|
||||
self.controller.save(self.email_var.get())
|
||||
|
||||
def show_error(self, message):
|
||||
"""
|
||||
Show an error message
|
||||
:param message:
|
||||
:return:
|
||||
"""
|
||||
self.message_label['text'] = message
|
||||
self.message_label['foreground'] = 'red'
|
||||
self.message_label.after(3000, self.hide_message)
|
||||
self.email_entry['foreground'] = 'red'
|
||||
|
||||
def show_success(self, message):
|
||||
"""
|
||||
Show a success message
|
||||
:param message:
|
||||
:return:
|
||||
"""
|
||||
self.message_label['text'] = message
|
||||
self.message_label['foreground'] = 'green'
|
||||
self.message_label.after(3000, self.hide_message)
|
||||
|
||||
# reset the form
|
||||
self.email_entry['foreground'] = 'black'
|
||||
self.email_var.set('')
|
||||
|
||||
def hide_message(self):
|
||||
"""
|
||||
Hide the message
|
||||
:return:
|
||||
"""
|
||||
self.message_label['text'] = ''
|
||||
def event_btn(self) -> None:
|
||||
print("you clicked ! And now you are on info page ... :D")
|
||||
self.__controller.on_change_view(Frames.Info)
|
||||
53
view/InfoView.py
Normal file
53
view/InfoView.py
Normal file
@@ -0,0 +1,53 @@
|
||||
import tkinter as tk
|
||||
from tkinter import ttk
|
||||
from controller.Frames import Frames
|
||||
from controller.InfoController import InfoController
|
||||
|
||||
class InfoView(ttk.Frame):
|
||||
"""
|
||||
View - MainWindow
|
||||
|
||||
dec...
|
||||
|
||||
@author Jérémi Nihart / EndMove
|
||||
@link https://git.endmove.eu/EndMove/WebPicDownloader
|
||||
@version 1.0.0
|
||||
@since 2022-08-30
|
||||
"""
|
||||
# Variables
|
||||
__controller: InfoController = None
|
||||
|
||||
# Constructor
|
||||
def __init__(self, parent, controller: InfoController):
|
||||
super().__init__(parent)
|
||||
|
||||
# create widgets
|
||||
# label
|
||||
self.label = ttk.Label(self, text='Email:')
|
||||
self.label.grid(row=1, column=0)
|
||||
|
||||
# email entry
|
||||
# self.email_var = tk.StringVar()
|
||||
# self.email_entry = ttk.Entry(self, textvariable=self.email_var, width=30)
|
||||
# self.email_entry.grid(row=1, column=1, sticky=tk.NSEW)
|
||||
|
||||
# save button
|
||||
self.save_button = ttk.Button(self, text='just a button', command=self.event_btn)
|
||||
self.save_button.grid(row=1, column=3, padx=10)
|
||||
|
||||
# message
|
||||
self.message_label = ttk.Label(self, text='Je suis super man comment allez vous heheheh je suis toutou', foreground='red')
|
||||
self.message_label.grid(row=2, column=0, sticky=tk.EW)
|
||||
|
||||
# place this frame
|
||||
# self.grid(row=0, column=0, padx=5, pady=5, sticky=tk.NSEW)
|
||||
# self.pack(fill='both', expand=True)
|
||||
|
||||
# Save and setup main controller
|
||||
self.__controller = controller
|
||||
controller.set_view(self)
|
||||
|
||||
def event_btn(self) -> None:
|
||||
print("you clicked on the button that is on the info view!")
|
||||
print("got redirected to the home view :D")
|
||||
self.__controller.on_change_view(Frames.Home)
|
||||
@@ -1,15 +1,24 @@
|
||||
from controller.MainController import MainController
|
||||
import tkinter as tk
|
||||
from tracemalloc import Frame
|
||||
from controller.MainController import MainController
|
||||
from controller.Frames import Frames
|
||||
|
||||
|
||||
class MainWindow(tk.Tk):
|
||||
"""
|
||||
View - MainWindow
|
||||
View - MainWindow
|
||||
|
||||
dec...
|
||||
|
||||
@author Jérémi Nihart / EndMove
|
||||
@link https://git.endmove.eu/EndMove/WebPicDownloader
|
||||
@version 1.0.0
|
||||
@since 2022-08-30
|
||||
"""
|
||||
# Variables
|
||||
__controller: MainController = None
|
||||
__views: dict = None
|
||||
__current_view = None
|
||||
|
||||
# Constructor
|
||||
def __init__(self, controller: MainController):
|
||||
@@ -22,11 +31,16 @@ class MainWindow(tk.Tk):
|
||||
self.title('Tkinter app')
|
||||
self.geometry('450x250')
|
||||
self.resizable(False, False)
|
||||
self.config(bg='#f7ef38')
|
||||
|
||||
self.rowconfigure(0, weight=1)
|
||||
self.columnconfigure(0, weight=1)
|
||||
|
||||
# Save and setup main controller
|
||||
self.__controller = controller
|
||||
controller.set_view(self)
|
||||
|
||||
# START App methods
|
||||
def add_view(self, frame, view):
|
||||
"""
|
||||
[function for app]
|
||||
@@ -34,17 +48,21 @@ class MainWindow(tk.Tk):
|
||||
:frame: -> the frame id of the view to add.
|
||||
"""
|
||||
self.__views[frame] = view
|
||||
# END App methods
|
||||
|
||||
# START Controller methods
|
||||
def show_frame(self, frame):
|
||||
"""
|
||||
[function for app & controller]
|
||||
|
||||
:frame: -> the frame if of the view to display.
|
||||
"""
|
||||
print(self.__views)
|
||||
if self.__views.get(frame):
|
||||
self.__views.get(frame).tkraise()
|
||||
#self.view = self.__views.get(frame)
|
||||
#self.view.grid(row=0, column=0)
|
||||
new_view = self.__views.get(frame)
|
||||
if new_view:
|
||||
if self.__current_view:
|
||||
self.__current_view.pack_forget()
|
||||
new_view.pack(fill=tk.BOTH, expand=False)
|
||||
self.__current_view = new_view
|
||||
else:
|
||||
raise ValueError("Unable to find the requested Frame")
|
||||
raise ValueError("Unable to find the requested Frame")
|
||||
# END Controller methods
|
||||
Reference in New Issue
Block a user