From 174c72bac0e7e50c62fdf4b19481de442b0ca38d Mon Sep 17 00:00:00 2001 From: bgoergen Date: Wed, 13 Dec 2023 19:54:05 +0100 Subject: [PATCH] Fenster und Frames in externe Dateien abgelegt --- Programm/frame_dashboard.py | 3 + Programm/frame_edit.py | 10 ++++ Programm/frame_users.py | 10 ++++ Programm/main.py | 110 +++++------------------------------- Programm/sideframe.py | 51 +++++++++++++++++ Programm/window_settings.py | 31 ++++++++++ 6 files changed, 120 insertions(+), 95 deletions(-) create mode 100644 Programm/frame_edit.py create mode 100644 Programm/frame_users.py create mode 100644 Programm/sideframe.py create mode 100644 Programm/window_settings.py diff --git a/Programm/frame_dashboard.py b/Programm/frame_dashboard.py index d6333d3..a8ee789 100644 --- a/Programm/frame_dashboard.py +++ b/Programm/frame_dashboard.py @@ -2,6 +2,9 @@ from customtkinter import * from CTkTable import * from PIL import Image +mainColor = "#C03F49" +contrastColor = "#8F2F3E" + def create(self): self.buttonTest = CTkButton(master=self.main_container, text="Dashboard", fg_color=contrastColor, font=("Arial Bold", 14), hover_color=mainColor, anchor="center") self.buttonTest.pack(padx=5, pady=5,expand=True) \ No newline at end of file diff --git a/Programm/frame_edit.py b/Programm/frame_edit.py new file mode 100644 index 0000000..a42cee7 --- /dev/null +++ b/Programm/frame_edit.py @@ -0,0 +1,10 @@ +from customtkinter import * +from CTkTable import * +from PIL import Image + +mainColor = "#C03F49" +contrastColor = "#8F2F3E" + +def create(self): + self.buttonTest = CTkButton(master=self.main_container, text="Eintragen", fg_color=contrastColor, font=("Arial Bold", 14), hover_color=mainColor, anchor="center") + self.buttonTest.pack(padx=5, pady=5,expand=True) diff --git a/Programm/frame_users.py b/Programm/frame_users.py new file mode 100644 index 0000000..48047bd --- /dev/null +++ b/Programm/frame_users.py @@ -0,0 +1,10 @@ +from customtkinter import * +from CTkTable import * +from PIL import Image + +mainColor = "#C03F49" +contrastColor = "#8F2F3E" + +def create(self): + self.buttonTest = CTkButton(master=self.main_container, text="Sportler", fg_color=contrastColor, font=("Arial Bold", 14), hover_color=mainColor, anchor="center") + self.buttonTest.pack(padx=5, pady=5,expand=True) diff --git a/Programm/main.py b/Programm/main.py index 814d80b..5d3ba98 100644 --- a/Programm/main.py +++ b/Programm/main.py @@ -1,9 +1,8 @@ from customtkinter import * from CTkTable import * from PIL import Image -import frame_table -import frame_dashboard -import colors + +import sideframe, frame_dashboard, frame_edit, frame_table, frame_users, window_settings # Links # - Icons: https://www.flaticon.com @@ -13,34 +12,12 @@ import colors # Referenzen # - Vorlage: https://github.com/RoyChng/customtkinter-examples/tree/master/Inventory%20Management +mainColor = "#C03F49" +contrastColor = "#8F2F3E" + +set_appearance_mode("light") -set_appearance_mode("light") # Bei Änderung muss "text" von Window_Settings/button_appearance ebenfalls geändert werden! - -class Window_Settings(CTkToplevel): - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - self.downSized = 0.5 - self.geometry("%dx%d" % (self.master.height*16/9*self.downSized, self.master.height*self.downSized)) - self.title("Einstellungen") - - self.frame_appearance = CTkFrame(master=self) - self.frame_appearance.pack(expand=True) - - self.label = CTkLabel(self.frame_appearance, text="Erscheinung") - self.label.pack(padx=5, pady=5) - - self.img_appearance = CTkImage(dark_image=Image.open("img/icons/moon_black.png"), light_image=Image.open("img/icons/sun_white.png")) - self.button_appearance = CTkButton(master=self.frame_appearance, image=self.img_appearance, text="Hell", text_color =("White","Black"),fg_color=("Black","White"), font=("Arial Bold", 14), hover_color=("#1A1A1A","#E6E6E6"), anchor="w",command=self.toggleAppearance) - self.button_appearance.pack(padx=5, pady=5) - - def toggleAppearance(self): - if(get_appearance_mode()=="Dark"): - self.button_appearance.configure(text="Hell") - set_appearance_mode("light") - else: - self.button_appearance.configure(text="Dunkel") - set_appearance_mode("dark") class Main_Window(CTk): def __init__(self, *args, **kwargs): @@ -53,49 +30,7 @@ class Main_Window(CTk): self.geometry("%dx%d" % (self.height*16/9*self.downSized, self.height*self.downSized)) set_widget_scaling(self.scale*self.downSized) - self.sidebar_frame = CTkFrame(master=self, fg_color=colors.mainColor, width=176, corner_radius=10*self.scale, bg_color="transparent") - self.sidebar_frame.pack(fill=Y,side=LEFT,anchor="w",padx=5, pady=5) - - self.img = [Image.open("img/logo_running.png"), - Image.open("img/icons/analytics_white.png"), - Image.open("img/icons/pen_white.png"), - Image.open("img/icons/table_white.png"), - Image.open("img/icons/group_white.png"), - Image.open("img/icons/settings_white.png")] - - self.img_red = [Image.open("img/icons/analytics_red.png"), - Image.open("img/icons/pen_red.png"), - Image.open("img/icons/table_red.png"), - Image.open("img/icons/group_red.png")] - - self.img_logo = CTkImage(dark_image=self.img[0], light_image=self.img[0], size=(100,100)) - self.logo = CTkLabel(master=self.sidebar_frame, text="", image=self.img_logo) - self.logo.pack(padx=5, pady=20) - - self.img_dashboard = CTkImage(dark_image=self.img[1], light_image=self.img[1]) - self.img_dashboard_red = CTkImage(dark_image=self.img_red[0], light_image=self.img_red[0]) - self.button1 = CTkButton(master=self.sidebar_frame, image=self.img_dashboard, text="Dashboard", text_color="#fff", fg_color="transparent", font=("Arial Bold", 14), hover_color=colors.contrastColor, anchor="w", command=lambda: self.initiate_window(1)) - self.button1.pack(padx=5, pady=5) - - self.img_edit = CTkImage(dark_image=self.img[2], light_image=self.img[2]) - self.img_edit_red = CTkImage(dark_image=self.img_red[1], light_image=self.img_red[1]) - self.button2 = CTkButton(master=self.sidebar_frame, image=self.img_edit, text="Eintragen", text_color="#fff", fg_color="transparent", font=("Arial Bold", 14), hover_color=colors.contrastColor, anchor="w", command=lambda: self.initiate_window(2)) - self.button2.pack(padx=5, pady=5) - - - self.img_table = CTkImage(dark_image=self.img[3], light_image=self.img[3]) - self.img_table_red = CTkImage(dark_image=self.img_red[2], light_image=self.img_red[2]) - self.button3 = CTkButton(master=self.sidebar_frame, image=self.img_table, text="Werte", text_color="#fff", fg_color="transparent", font=("Arial Bold", 14), hover_color=colors.contrastColor, anchor="w", command=lambda: self.initiate_window(3)) - self.button3.pack(padx=5, pady=5) - - self.img_users = CTkImage(dark_image=self.img[4], light_image=self.img[4]) - self.img_users_red = CTkImage(dark_image=self.img_red[3], light_image=self.img_red[3]) - self.button4 = CTkButton(master=self.sidebar_frame, image=self.img_users, text="Sportler", text_color="#fff", fg_color="transparent", font=("Arial Bold", 14), hover_color=colors.contrastColor, anchor="w", command=lambda: self.initiate_window(4)) - self.button4.pack(padx=5, pady=5) - - self.img_settings = CTkImage(dark_image=self.img[5], light_image=self.img[5]) - self.button5 = CTkButton(master=self.sidebar_frame, image=self.img_settings, text="Einstellungen", text_color="#fff", fg_color="transparent", font=("Arial Bold", 14), hover_color=colors.contrastColor, anchor="w", command=self.open_window_settings) - self.button5.pack(padx=10, pady=10,side=BOTTOM) + sideframe.create(self) self.window_settings = None @@ -104,9 +39,9 @@ class Main_Window(CTk): self.lastWindow = None self.lastButton = None - self.initiate_window(3) + self.initiate_frame(1) - def initiate_window(self,windowNumber): + def initiate_frame(self,windowNumber): if(windowNumber!=self.lastWindow): self.updateButton(windowNumber) self.clear_frame() @@ -114,11 +49,11 @@ class Main_Window(CTk): if(windowNumber==1): frame_dashboard.create(self) elif(windowNumber==2): - self.window_2() + frame_edit.create(self) elif(windowNumber==3): frame_table.create(self) elif(windowNumber==4): - self.window_4() + frame_users.create(self) self.lastWindow = windowNumber @@ -127,36 +62,21 @@ class Main_Window(CTk): img = [self.img_dashboard,self.img_edit,self.img_table,self.img_users] img_red = [self.img_dashboard_red,self.img_edit_red,self.img_table_red,self.img_users_red] - buttons[buttonNumber-1].configure(fg_color="#fff", hover_color="#eee",text_color=colors.mainColor,image=img_red[buttonNumber-1]) + buttons[buttonNumber-1].configure(fg_color="#fff", hover_color="#eee",text_color=mainColor,image=img_red[buttonNumber-1]) if(self.lastButton != None): - buttons[self.lastButton-1].configure(fg_color="transparent", hover_color=colors.contrastColor, text_color="#fff",image=img[self.lastButton-1]) + buttons[self.lastButton-1].configure(fg_color="transparent", hover_color=contrastColor, text_color="#fff",image=img[self.lastButton-1]) self.lastButton = buttonNumber - def window_2(self): # Eintragen - self.buttonTest = CTkButton(master=self.main_container, text="Eintragen", fg_color=colors.contrastColor, font=("Arial Bold", 14), hover_color=colors.mainColor, anchor="center") - self.buttonTest.pack(padx=5, pady=5,expand=True) - - - - def window_4(self): # Sportler - self.buttonTest = CTkButton(master=self.main_container, text="Sportler", fg_color=colors.contrastColor, font=("Arial Bold", 14), hover_color=colors.mainColor, anchor="center") - self.buttonTest.pack(padx=5, pady=5,expand=True) - def open_window_settings(self): # Einstellungen if self.window_settings is None or not self.window_settings.winfo_exists(): - self.window_settings = Window_Settings(self) # create window if its None or destroyed + self.window_settings = window_settings.Window_Settings(self) # create window if its None or destroyed else: self.window_settings.focus() # if window exists focus it def clear_frame(self): for widget in self.main_container.winfo_children(): widget.destroy() - - - - - -app = Main_Window() +app = Main_Window() app.mainloop() diff --git a/Programm/sideframe.py b/Programm/sideframe.py new file mode 100644 index 0000000..aa55667 --- /dev/null +++ b/Programm/sideframe.py @@ -0,0 +1,51 @@ +from customtkinter import * +from CTkTable import * +from PIL import Image + +mainColor = "#C03F49" +contrastColor = "#8F2F3E" + +def create(self): + self.sidebar_frame = CTkFrame(master=self, fg_color=mainColor, width=176, corner_radius=10*self.scale, bg_color="transparent") + self.sidebar_frame.pack(fill=Y,side=LEFT,anchor="w",padx=5, pady=5) + + self.img = [Image.open("img/logo_running.png"), + Image.open("img/icons/analytics_white.png"), + Image.open("img/icons/pen_white.png"), + Image.open("img/icons/table_white.png"), + Image.open("img/icons/group_white.png"), + Image.open("img/icons/settings_white.png")] + + self.img_red = [Image.open("img/icons/analytics_red.png"), + Image.open("img/icons/pen_red.png"), + Image.open("img/icons/table_red.png"), + Image.open("img/icons/group_red.png")] + + self.img_logo = CTkImage(dark_image=self.img[0], light_image=self.img[0], size=(100,100)) + self.logo = CTkLabel(master=self.sidebar_frame, text="", image=self.img_logo) + self.logo.pack(padx=5, pady=20) + + self.img_dashboard = CTkImage(dark_image=self.img[1], light_image=self.img[1]) + self.img_dashboard_red = CTkImage(dark_image=self.img_red[0], light_image=self.img_red[0]) + self.button1 = CTkButton(master=self.sidebar_frame, image=self.img_dashboard, text="Dashboard", text_color="#fff", fg_color="transparent", font=("Arial Bold", 14), hover_color=contrastColor, anchor="w", command=lambda: self.initiate_frame(1)) + self.button1.pack(padx=5, pady=5) + + self.img_edit = CTkImage(dark_image=self.img[2], light_image=self.img[2]) + self.img_edit_red = CTkImage(dark_image=self.img_red[1], light_image=self.img_red[1]) + self.button2 = CTkButton(master=self.sidebar_frame, image=self.img_edit, text="Eintragen", text_color="#fff", fg_color="transparent", font=("Arial Bold", 14), hover_color=contrastColor, anchor="w", command=lambda: self.initiate_frame(2)) + self.button2.pack(padx=5, pady=5) + + + self.img_table = CTkImage(dark_image=self.img[3], light_image=self.img[3]) + self.img_table_red = CTkImage(dark_image=self.img_red[2], light_image=self.img_red[2]) + self.button3 = CTkButton(master=self.sidebar_frame, image=self.img_table, text="Werte", text_color="#fff", fg_color="transparent", font=("Arial Bold", 14), hover_color=contrastColor, anchor="w", command=lambda: self.initiate_frame(3)) + self.button3.pack(padx=5, pady=5) + + self.img_users = CTkImage(dark_image=self.img[4], light_image=self.img[4]) + self.img_users_red = CTkImage(dark_image=self.img_red[3], light_image=self.img_red[3]) + self.button4 = CTkButton(master=self.sidebar_frame, image=self.img_users, text="Sportler", text_color="#fff", fg_color="transparent", font=("Arial Bold", 14), hover_color=contrastColor, anchor="w", command=lambda: self.initiate_frame(4)) + self.button4.pack(padx=5, pady=5) + + self.img_settings = CTkImage(dark_image=self.img[5], light_image=self.img[5]) + self.button5 = CTkButton(master=self.sidebar_frame, image=self.img_settings, text="Einstellungen", text_color="#fff", fg_color="transparent", font=("Arial Bold", 14), hover_color=contrastColor, anchor="w", command=self.open_window_settings) + self.button5.pack(padx=10, pady=10,side=BOTTOM) diff --git a/Programm/window_settings.py b/Programm/window_settings.py new file mode 100644 index 0000000..ef4244b --- /dev/null +++ b/Programm/window_settings.py @@ -0,0 +1,31 @@ +from customtkinter import * +from CTkTable import * +from PIL import Image + +mainColor = "#C03F49" +contrastColor = "#8F2F3E" + +class Window_Settings(CTkToplevel): + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.downSized = 0.5 + self.geometry("%dx%d" % (self.master.height*16/9*self.downSized, self.master.height*self.downSized)) + self.title("Einstellungen") + + self.frame_appearance = CTkFrame(master=self) + self.frame_appearance.pack(expand=True) + + self.label = CTkLabel(self.frame_appearance, text="Erscheinung") + self.label.pack(padx=5, pady=5) + + self.img_appearance = CTkImage(dark_image=Image.open("img/icons/moon_black.png"), light_image=Image.open("img/icons/sun_white.png")) + self.button_appearance = CTkButton(master=self.frame_appearance, image=self.img_appearance, text="Hell", text_color =("White","Black"),fg_color=("Black","White"), font=("Arial Bold", 14), hover_color=("#1A1A1A","#E6E6E6"), anchor="w",command=self.toggleAppearance) + self.button_appearance.pack(padx=5, pady=5) + + def toggleAppearance(self): + if(get_appearance_mode()=="Dark"): + self.button_appearance.configure(text="Hell") + set_appearance_mode("light") + else: + self.button_appearance.configure(text="Dunkel") + set_appearance_mode("dark") \ No newline at end of file