diff --git a/Pomodrone/pomodrone.py b/Pomodrone/pomodrone.py new file mode 100644 index 0000000..470d7fe --- /dev/null +++ b/Pomodrone/pomodrone.py @@ -0,0 +1,94 @@ +import tkinter as tk +from tkinter import messagebox +from PIL import Image, ImageTk +from playsound import playsound +import time + +class Pomodoro: + def __init__(self, root): + self.root = root + + def work_break(self, timer): + + # common block to display minutes + # and seconds on GUI + minutes, seconds = divmod(timer, 60) + self.min.set(f"{minutes:02d}") + self.sec.set(f"{seconds:02d}") + self.root.update() + time.sleep(1) + + def work(self): + timer = 25*60 + while timer >= 0: + pomo.work_break(timer) + if timer == 0: + + # once work is done play + # a sound and switch for break + playsound("sound.ogg") + messagebox.showinfo( + "Good Job", "Take A Break, \ + nClick Break Button") + timer -= 1 + + def break_(self): + timer = 5*60 + while timer >= 0: + pomo.work_break(timer) + if timer == 0: + + # once break is done, + # switch back to work + playsound("sound.ogg") + messagebox.showinfo( + "Times Up", "Get Back To Work, \ + nClick Work Button") + timer -= 1 + + def main(self): + + # GUI window configuration + self.root.geometry("450x455") + self.root.resizable(False, False) + self.root.title("Pomodoro Timer") + + # label + self.min = tk.StringVar(self.root) + self.min.set("25") + self.sec = tk.StringVar(self.root) + self.sec.set("00") + + self.min_label = tk.Label(self.root, + textvariable=self.min, font=( + "arial", 22, "bold"), bg="red", fg='black') + self.min_label.pack() + + self.sec_label = tk.Label(self.root, + textvariable=self.sec, font=( + "arial", 22, "bold"), bg="black", fg='white') + self.sec_label.pack() + + # add background image for GUI using Canvas widget + canvas = tk.Canvas(self.root) + canvas.pack(expand=True, fill="both") + img = Image.open('pomodoro.jpg') + bg = ImageTk.PhotoImage(img) + canvas.create_image(90, 10, image=bg, anchor="nw") + + # create three buttons with countdown function command + btn_work = tk.Button(self.root, text="Start", + bd=5, command=self.work, + bg="red", font=( + "arial", 15, "bold")).place(x=140, y=380) + btn_break = tk.Button(self.root, text="Break", + bd=5, command=self.break_, + bg="red", font=( + "arial", 15, "bold")).place(x=240, y=380) + + self.root.mainloop() + + +if __name__ == '__main__': + pomo = Pomodoro(tk.Tk()) + pomo.main()