Portfolio Project 5: GUI Application

This project's task was to create a typing test application using Tkinter. I had initially been intimidated by this project when I first arrived at the portfolio section of this course. However, after tackling this project, I can say that my experience has grown since I initially read the requirements for what was being asked of.

App Screenshot

The main goal for this project was to create a typing speed test application using Tkinter. This initially sounded intimidating to me when I first looked at the requirements for this project but after knocking out most of the other projects in this course, this project felt fairly manageable.

To achieve the goal of creating the typing speed test application, I broke down the project into the following sections.

  1. Setup the GUI interface
  2. Add functionality to select a test prompt and display it on the screen
  3. Implement the countdown mechanism
  4. Calculate the user’s accuracy, words per minute and adjusted words per minute accounting for errors
  5. Add an option to reset the test and start again

Most of this was easy to implement once I took a step back and implanted the components individually. There were a few challenges I ran into that will be highlighted in the next section.


There were two challenges I encountered while working on this project that required a bit of trial and error.

  • Setting up the GUI
  • Calculating the user’s typed words per minute, and accuracy.

Setting up the GUI required a bit more trial and error than I would have initially liked. To start off, I used grid to place the items on the Window but after placing everything on the screen, it did not look visually appealing. Although I used the grid method for the watermarking application, this did not look good for this project. Instead, similarly to the disappearing text application, I ended up using the place method to place the objects on the screen. After a good amount of trial and error, I ended up with the placement of objects as depicted in the screenshot above. This also included adding spacing between the lines displayed in the text boxes to make them easier to read.

The second challenge in completing this project was calculating the gross WPN, net WPM and accuracy. To resolve this issue, I found the formulas used to get these values online. Additionally, I did several tests outside of the Tkinter application using those formulates to make sure that I was getting a desired result. Once I was satisfied with the results of the formulas, I implemented them into a function for the Tkinter application that would execute once the timer hits 0 seconds.


This was a project I was initially intimidated by when I first arrived at the portfolio projects section of this course. I saved this one to the very end thinking it would be harder than it was. Although the project itself did present challenges, it was nowhere near as hard as I was leading myself to believe it would be. I would say this is in part because as I knocked out more projects for this course, the more my confidence grew.

Overall, this was a fun project to complete and it really showed me how much I have grown knocking these projects out!