99import customtkinter as ctk
1010from styles import *
1111from matplotlib .ticker import MaxNLocator
12+ from PIL import Image
1213
1314APPNAME = "Timer App"
1415FILENAME = "Timer Data.xlsx"
5354settings_frame .grid_forget ()
5455settings_frame .grid_propagate (False )
5556
57+ achievements_frame = ctk .CTkFrame (WINDOW , fg_color = main_frame_color , height = HEIGHT + ((widget_padding_x + frame_padding )* 2 ), width = WIDTH , corner_radius = 0 )
58+ achievements_frame .grid (column = 2 , row = 0 , padx = main_frame_pad_x )
59+ achievements_frame .grid_forget ()
60+ achievements_frame .grid_propagate (False )
61+
62+ history_frame = ctk .CTkFrame (WINDOW , fg_color = main_frame_color , height = HEIGHT + ((widget_padding_x + frame_padding )* 2 ), width = WIDTH , corner_radius = 0 )
63+ history_frame .grid (column = 2 , row = 0 , padx = main_frame_pad_x )
64+ history_frame .grid_forget ()
65+ history_frame .grid_propagate (False )
66+
5667def customize_excel (worksheet ):
5768 worksheet ["A1" ].value = "Start:"
5869 worksheet ["B1" ].value = "End:"
@@ -450,23 +461,55 @@ def save_on_quit():
450461 workbook .save (data_file )
451462 WINDOW .destroy ()
452463
453- def to_main ():
454- main_frame .grid (column = 2 , row = 0 , padx = main_frame_pad_x )
455- main_frame .grid_propagate (False )
456- statistics_frame .grid_forget ()
457- settings_frame .grid_forget ()
464+ def switch_tab (tab = str ):
465+ match tab :
466+ case "main" :
467+ main_frame .grid (column = 2 , row = 0 , padx = main_frame_pad_x )
468+ main_frame .grid_propagate (False )
469+ statistics_frame .grid_forget ()
470+ settings_frame .grid_forget ()
471+ achievements_frame .grid_forget ()
472+ history_frame .grid_forget ()
473+ case "statistics" :
474+ statistics_frame .grid (column = 2 , row = 0 , padx = main_frame_pad_x )
475+ statistics_frame .grid_propagate (False )
476+ main_frame .grid_forget ()
477+ settings_frame .grid_forget ()
478+ achievements_frame .grid_forget ()
479+ history_frame .grid_forget ()
480+ case "settings" :
481+ settings_frame .grid (column = 2 , row = 0 , padx = main_frame_pad_x )
482+ settings_frame .grid_propagate (False )
483+ main_frame .grid_forget ()
484+ statistics_frame .grid_forget ()
485+ achievements_frame .grid_forget ()
486+ history_frame .grid_forget ()
487+ case "achievements" :
488+ achievements_frame .grid (column = 2 , row = 0 , padx = main_frame_pad_x )
489+ achievements_frame .grid_propagate (False )
490+ statistics_frame .grid_forget ()
491+ settings_frame .grid_forget ()
492+ main_frame .grid_forget ()
493+ history_frame .grid_forget ()
494+ case "history" :
495+ history_frame .grid (column = 2 , row = 0 , padx = main_frame_pad_x )
496+ history_frame .grid_propagate (False )
497+ statistics_frame .grid_forget ()
498+ settings_frame .grid_forget ()
499+ main_frame .grid_forget ()
500+ achievements_frame .grid_forget ()
501+ load_history ()
458502
459- def to_statistics ():
460- statistics_frame .grid (column = 2 , row = 0 , padx = main_frame_pad_x )
461- statistics_frame .grid_propagate (False )
462- main_frame .grid_forget ()
463- settings_frame .grid_forget ()
503+
504+ def load_history ():
505+ global start_text
506+ start_history = ""
507+ for data in range (data_amount + 1 , 1 , - 1 ):
508+ print ("A" + str (data ))
509+ start_history += worksheet ["A" + str (data )].value
510+ start_history += "\n "
511+ start_text .configure (text = start_history )
464512
465- def to_settings ():
466- settings_frame .grid (column = 2 , row = 0 , padx = main_frame_pad_x )
467- settings_frame .grid_propagate (False )
468- main_frame .grid_forget ()
469- statistics_frame .grid_forget ()
470513
471514def get_goal ():
472515 global goal , goal_dropdown
@@ -508,6 +551,7 @@ def change_color(color, highlight_color, widget_list, progressbar):
508551 colors = {orange_button_color : "Orange" , green_button_color : "Green" , blue_button_color : "Blue" }
509552 worksheet ["T1" ].value = colors [color ]
510553 workbook .save (data_file )
554+ print ("Color saved." )
511555 collect_data ()
512556 for widget in widget_list :
513557 widget .configure (fg_color = color , hover_color = highlight_color )
@@ -517,7 +561,7 @@ def set_color(widget):
517561 global color , graph_color , pie_color_1 , pie_color_2 , pie_color_3 , pie_color_4 , pie_color_5 , pie_color_6 , pie_color_7 , day_duration_list , day_name_list
518562 worksheet ["T1" ].value = color
519563 workbook .save (data_file )
520- print ("Color saved ." )
564+ print ("Color changed ." )
521565 color = widget .get ()
522566 colors = {"Orange" : orange_button_color , "Green" : green_button_color , "Blue" : blue_button_color }
523567 highlight_colors = {"Orange" : orange_highlight_color , "Green" : green_highlight_color , "Blue" : blue_highlight_color }
@@ -531,6 +575,7 @@ def set_color(widget):
531575 change_color (c , highlight_color , widget_list , progressbar )
532576
533577#------------------------------------------------------------------------------GUI------------------------------------------------------------------------------#
578+ #clock_image = ctk.CTkImage(light_image=Image.open("images/clock.png"), size=(image_width, image_height))
534579def change_focus (event ):
535580 event .widget .focus_set ()
536581
@@ -625,20 +670,42 @@ def change_focus(event):
625670#TABS
626671timer_tab = ctk .CTkFrame (tab_frame , width = tab_frame_width , height = tab_height * 0.8 , fg_color = tab_color )
627672timer_tab .pack (pady = tab_padding_y )
628- timer_tab_btn = ctk .CTkButton (timer_tab , text = "Timer" , font = (tab_font_family , 22 * tab_height / 55 , tab_font_weight ), text_color = font_color ,
629- fg_color = tab_color , width = int (tab_frame_width * 0.95 ), height = int (tab_height * 0.7 ), hover_color = tab_highlight_color , anchor = "w" , command = to_main )
673+ timer_tab_btn = ctk .CTkButton (timer_tab , text = "Timer" , font = (tab_font_family , 22 * tab_height / 50 , tab_font_weight ), text_color = font_color ,
674+ fg_color = tab_color , width = int (tab_frame_width * 0.95 ), height = int (tab_height * 0.7 ), hover_color = tab_highlight_color , anchor = "w" , command = lambda : switch_tab ( "main" ) )
630675timer_tab_btn .place (relx = 0.5 , rely = 0.5 , anchor = "center" )
631676
632677statistics_tab = ctk .CTkFrame (tab_frame , width = tab_frame_width , height = tab_height * 0.8 , fg_color = tab_color )
633678statistics_tab .pack (pady = tab_padding_y )
634- statistics_btn = ctk .CTkButton (statistics_tab , text = "Statistics" , font = (tab_font_family , 22 * tab_height / 55 , tab_font_weight ), text_color = font_color ,
635- fg_color = tab_color , width = int (tab_frame_width * 0.95 ), height = int (tab_height * 0.7 ), hover_color = tab_highlight_color , anchor = "w" , command = to_statistics )
679+ statistics_btn = ctk .CTkButton (statistics_tab , text = "Statistics" , font = (tab_font_family , 22 * tab_height / 50 , tab_font_weight ), text_color = font_color ,
680+ fg_color = tab_color , width = int (tab_frame_width * 0.95 ), height = int (tab_height * 0.7 ), hover_color = tab_highlight_color , anchor = "w" , command = lambda : switch_tab ( "statistics" ) )
636681statistics_btn .place (relx = 0.5 , rely = 0.5 , anchor = "center" )
637682
683+ achievements_tab = ctk .CTkFrame (tab_frame , width = tab_frame_width , height = tab_height * 0.8 , fg_color = tab_color )
684+ achievements_tab .pack (pady = tab_padding_y )
685+ achievements_btn = ctk .CTkButton (achievements_tab , text = "Achievements" , font = (tab_font_family , 22 * tab_height / 50 , tab_font_weight ), text_color = font_color ,
686+ fg_color = tab_color , width = int (tab_frame_width * 0.95 ), height = int (tab_height * 0.7 ), hover_color = tab_highlight_color , anchor = "w" , command = lambda : switch_tab ("achievements" ))
687+ achievements_btn .place (relx = 0.5 , rely = 0.5 , anchor = "center" )
688+
689+ history_tab = ctk .CTkFrame (tab_frame , width = tab_frame_width , height = tab_height * 0.8 , fg_color = tab_color )
690+ history_tab .pack (pady = tab_padding_y )
691+ history_btn = ctk .CTkButton (history_tab , text = "History" , font = (tab_font_family , 22 * tab_height / 50 , tab_font_weight ), text_color = font_color ,
692+ fg_color = tab_color , width = int (tab_frame_width * 0.95 ), height = int (tab_height * 0.7 ), hover_color = tab_highlight_color , anchor = "w" , command = lambda : switch_tab ("history" ))
693+ history_btn .place (relx = 0.5 , rely = 0.5 , anchor = "center" )
694+
695+ last_sessions_frame = ctk .CTkFrame (history_frame , fg_color = frame_color , corner_radius = 10 , height = (HEIGHT + ((widget_padding_x )* 2 ))/ 2 , width = WIDTH - (frame_padding * 2 ),)
696+ last_sessions_frame .grid (padx = frame_padding , pady = frame_padding )
697+ last_sessions_frame .pack_propagate (False )
698+ start_frame = ctk .CTkFrame (last_sessions_frame , fg_color = "transparent" )
699+ start_frame .pack (padx = frame_padding , pady = frame_padding )
700+ start_label = ctk .CTkLabel (start_frame , text = "Start" , font = (font_family , font_size ), text_color = font_color )
701+ start_label .pack (padx = widget_padding_x , pady = widget_padding_y )
702+ start_text = ctk .CTkLabel (start_frame , font = (font_family , font_size ), text_color = font_color )
703+ start_text .pack (padx = widget_padding_x , pady = widget_padding_y )
704+
638705settings_tab = ctk .CTkFrame (tab_frame , width = tab_frame_width , height = tab_height * 0.8 , fg_color = tab_color )
639706settings_tab .place (relx = 0.5 , rely = 1 , anchor = "s" )
640- settings_btn = ctk .CTkButton (settings_tab , text = "Settings" , font = (tab_font_family , 22 * tab_height / 55 , tab_font_weight ), text_color = font_color ,
641- fg_color = tab_color , width = int (tab_frame_width * 0.95 ), height = int (tab_height * 0.7 ), hover_color = tab_highlight_color , anchor = "w" , command = to_settings )
707+ settings_btn = ctk .CTkButton (settings_tab , text = "Settings" , font = (tab_font_family , 22 * tab_height / 50 , tab_font_weight ), text_color = font_color ,
708+ fg_color = tab_color , width = int (tab_frame_width * 0.95 ), height = int (tab_height * 0.7 ), hover_color = tab_highlight_color , anchor = "w" , command = lambda : switch_tab ( "settings" ) )
642709settings_btn .place (relx = 0.5 , rely = 0.5 , anchor = "center" )
643710
644711color_select_frame = ctk .CTkFrame (settings_frame , fg_color = frame_color , height = 200 , width = int (frame_width / 1.25 ), corner_radius = 10 )
0 commit comments