Skip to content

mhcrnl/Pomodoro-Timer

 
 

Repository files navigation

Pomoodoro Timer

description

Customizable pomodoro timer with different modes built on PyQt5 to be used with the Pomodoro technique for studying.

function

  1. Countdown timer
  2. Different modes (Study and Break)
  3. Notification sound goes off when the timer is done
  4. Settings to change the amount of time you want per mode
  5. Setting to toggle the notification sound

what I learned

  1. More Python practice.
  2. State machines used to design the timer logic and the different modes.
  3. How to add sound through PyQt5.
  4. Adding images to PyQt5 to make program look better.
  5. Asynchronously run a portion of the program while being able to respond to user input.
  6. A little more complex use of signals in order to base the program's behavior on the GUI's info rather than initializing more variables which would complicate things further.

notes

I've made a pomodoro timer before but the one I made was based on an Arduino circuit and wasn't as complex as this one because this one allowed the option to change the amount of time you want per mode and also had a reset button and a notification sound when the timer ends. A problem I had in my other PyQt5 programs was that whenever the program was running, it wouldn't be able to listen to user input signlas because I used python's time library that would completely halt the program. Instead, for this program I used PyQt5's QTime module that would allow the program to asynchronously run the timer while also being able to listen for user input such as when the user wants to pause, reset and ect. Originally, I thought the program was going to be straightforward, but there were a lot of subtle problems that occured when translating my logic into a GUI compatible format.

Notification Sound Used

images

Home Menu

Home Menu

Settings Menu

Settings Menu

About

Customizable Pomodoro Technique Timer App built with Python and PyQt5 GUI

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%