Created
February 2, 2022 04:42
-
-
Save Jithender5913/8f3854d8abd9eff9c4028d46407c0fe0 to your computer and use it in GitHub Desktop.
Pomodoro GUI application using python Tkinter
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import math | |
from tkinter import * | |
# ---------------------------- 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 = "" | |
# ---------------------------- TIMER RESET ------------------------------- # | |
def reset_timer(): | |
window.after_cancel(timer) | |
canvas.itemconfig(timer_text, text="00:00") | |
timer_label.config(text="Timer") | |
tick_label.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: | |
count_down(long_break_sec) | |
timer_label.config(text="Break", fg=RED) | |
elif reps % 2 == 0: | |
count_down(short_break_sec) | |
timer_label.config(text="Break", fg=PINK) | |
else: | |
count_down(work_sec) | |
timer_label.config(text="Work", fg=GREEN) | |
# ---------------------------- COUNTDOWN MECHANISM ------------------------------- # | |
def count_down(count): | |
count_min = math.floor(count / 60) | |
count_second = count % 60 | |
if count_second < 10: | |
count_second = f"0{count_second}" | |
canvas.itemconfig(timer_text, text=f"{count_min}:{count_second}") | |
if count > 0: | |
global timer | |
timer = window.after(1000, count_down, count - 1) | |
else: | |
start_timer() | |
marks = "" | |
work_sessions = math.floor(reps / 2) | |
for _ in range(work_sessions): | |
marks += "🕉" | |
tick_label.config(text=marks) | |
# ---------------------------- UI SETUP ------------------------------- # | |
window = Tk() | |
window.title("Pomodoro GUI") | |
window.config(padx=50, pady=50, bg=YELLOW) | |
canvas = Canvas(width=200, height=224, bg=YELLOW, highlightthickness=0) | |
tomato_image = PhotoImage(file="tomato.png") | |
canvas.create_image(100, 112, image=tomato_image) | |
# Below, we are assigning the canvas create text to a variable named timer_text to use in def function above | |
timer_text = canvas.create_text(100, 130, text="00:00", fill="white", font=(FONT_NAME, 35, "bold")) | |
canvas.grid(column=1, row=1) | |
# Challenge - Complete the Application's User Interface (UI) | |
timer_label = Label(text="Timer", font=(FONT_NAME, 50, "bold"), bg=YELLOW, fg=GREEN) | |
timer_label.grid(column=1, row=0) | |
start_button = Button(text="Start", command=start_timer, bg=YELLOW, fg="violet") | |
start_button.grid(column=0, row=2) | |
reset_button = Button(text="Reset", bg=YELLOW, fg="violet", command=reset_timer) | |
reset_button.grid(column=2, row=2) | |
tick_label = Label(bg=YELLOW, fg=GREEN) | |
tick_label.grid(column=1, row=3) | |
window.mainloop() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment