From a1c357e5bdfc9b9e439372771c8483693c366f80 Mon Sep 17 00:00:00 2001 From: Raihan Khan Date: Sun, 9 Oct 2022 11:47:23 +0530 Subject: [PATCH] fixed #230 --- scripts/Pomodoro App/main.py | 90 ++++++++++++++++++++++++++++++++ scripts/Pomodoro App/tomato.png | Bin 0 -> 10784 bytes 2 files changed, 90 insertions(+) create mode 100644 scripts/Pomodoro App/main.py create mode 100644 scripts/Pomodoro App/tomato.png diff --git a/scripts/Pomodoro App/main.py b/scripts/Pomodoro App/main.py new file mode 100644 index 0000000..c64489a --- /dev/null +++ b/scripts/Pomodoro App/main.py @@ -0,0 +1,90 @@ +from tkinter import * +import math + +# ---------------------------- CONSTANTS ------------------------------- # +PINK = "#e2979c" +RED = "#e7305b" +GREEN = "#9bdeac" +YELLOW = "#f7f5dd" +FONT_NAME = "Courier" +WORK_MIN = 25 +SHORT_BREAK_MIN = 5 +LONG_BREAK_MIN = 20 +reps = 0 +timer = None + +# ---------------------------- TIMER RESET ------------------------------- # + +def reset_timer(): + canvas.after_cancel(timer) + text_label.config(text="Timer") + canvas.itemconfig(timer_text, text="00:00") + checkmark.config(text="") + global reps + reps = 0 + +# ---------------------------- TIMER MECHANISM ------------------------------- # +def start_timer(): + global reps + reps += 1 + + work_sec = WORK_MIN * 60 + short_break_sec = SHORT_BREAK_MIN * 60 + long_break_sec = LONG_BREAK_MIN * 60 + + if reps%8 == 0: + text_label.config(text="Long Break", fg=RED) + countdown(long_break_sec) + elif reps%2 == 0: + text_label.config(text="Short Break", fg=PINK) + countdown(short_break_sec) + else: + text_label.config(text="Work", fg=GREEN) + countdown(work_sec) +# ---------------------------- COUNTDOWN MECHANISM ------------------------------- # +def countdown(count): + + count_min = math.floor(count/60) + count_sec = count%60 + + if count_sec < 10: + count_sec = f"0{count_sec}" + + canvas.itemconfig(timer_text, text=f"{count_min}:{count_sec}") + if count > 0: + global timer + timer = window.after(1000, countdown, count - 1) + else: + start_timer() + mark="" + for _ in range(math.floor(reps/2)): + mark += "✔" + checkmark.config(text=mark, fg=GREEN, bg=YELLOW) + + +# -------------------------- UI SETUP ------------------------------- # +window = Tk() +window.title("Pomodoro") +window.config(padx=100, pady=50, bg=YELLOW) + +text_label = Label(text="Timer", fg=GREEN, bg=YELLOW, font=(FONT_NAME, 50)) +text_label.grid(row=0, column=1) + +tomato = PhotoImage(file="tomato.png") +canvas = Canvas(width=200, height=224, bg=YELLOW, highlightthickness=0) +canvas.create_image(100, 112, image=tomato) +timer_text = canvas.create_text(100, 130, text="00:00", fill="white", font=(FONT_NAME, 35, "bold")) + + +start_button = Button(text="Start", highlightthickness=0, command=start_timer) +start_button.grid(column=0, row=2) + +start_button = Button(text="Reset", highlightthickness=0, command=reset_timer) +start_button.grid(column=2, row=2) + +checkmark = Label(fg=GREEN, bg=YELLOW) +checkmark.grid(column=1, row=3) + +canvas.grid(column=1, row=1) + +window.mainloop() diff --git a/scripts/Pomodoro App/tomato.png b/scripts/Pomodoro App/tomato.png new file mode 100644 index 0000000000000000000000000000000000000000..b27ca87a6659b68617a04eb0a475ac1c5cda47da GIT binary patch literal 10784 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 literal 0 HcmV?d00001