gnikkoch96 / Python-Pomodoro-Timer-GUI

Pomodoro Timer GUI that will be coded mainly in Python

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Pomodoro Timer GUI Python Vers.

Description

Pomodoro Timer GUI emulates the Pomodoro Technique which is a time management method that breaks work into intervals separated by short or long breaks.

Technologies and Frameworks Used

Make sure to install the DearPyGUI and Playsound Modules for it to work. You can follow the installation to DearPyGUI here and Playsound here .

Alternatively just do pip install dearpygui==1.0.2 and pip install playsound==1.2.2 on your terminal

  • PyCharm IDE
  • DearPyGUI v1.0.2 (GUI Framework)
  • Playsound Module v1.2.2
  • Python 3.8+

Demonstration & How to Use

Note: You can run the software through the .exe file located in the dist folder

Configuring the Settings

Configured settings will be stored on local json file after starting the session

Checking User Data

User can check out the total mins of focus and the total pomodoros they have done so far

Timer Buttons

  • Pause - Pauses the timer
  • Stop - Stops the timer, and returns user back to the setting configurations
  • Restart - Resets the timer to the original timer and the Pomodoro Counter
  • Resume - (only available once the user pauses the timer) Resumes the timer

Timer Finished

Once the timer finishes, a small dialog appears that asks the user either to continue with focusing or take a break. The day's pomodoro counter will be incremented and saved to the json file

(For Window 10 Users only) Once the timer is finished it will also display a notification

What I learned

  • When using a new framework like this, it is important to visit their communities (i.e. Discord and Reddit) for help as usually problems don't appear often in popular sites like stackoverflow
  • Python has a more cleaner way of setting up a GUI as opposed to in Java.
  • Since threading was involved in counting down the timer and updating the GUI, I had to make them into daemon threads which meant that once the main thread ends it ends the process almost immediately
  • If I wanted a make a thread wait for another thread, I'd have to use the join()
  • I found it easier to create the GUI that I wanted with DearPyGUI as opposed to Swing framework from Java.
  • The reason why I chose DearPyGUI over other frameworks like Tkinter, QT, or Kivy is that it is open-source, I don't need to worry about the terms and conditions especially for a small project like this, and it has a very active community (Discord and Reddit).

Credit and Notice

The images I used for this project are not mine. You can find the sites where I got the images below

About

Pomodoro Timer GUI that will be coded mainly in Python


Languages

Language:Python 87.7%Language:HTML 7.9%Language:TeX 4.1%Language:PowerShell 0.2%Language:Batchfile 0.0%