Joe’s Expense Report GUI
Your task for this assignment is to enhance Dr. Fitz’s solution by creating a GUI using PyQt. Your program should
follow Object Oriented Programming (OOP) concepts in Python by importing and building on the class from Dr.
Fitz’s solution in Part 1.
Your GUI project should satisfy the following specifications. You may add other methods
and classes as necessary.
(a) Program features 4 dialog boxes for adding a category, adding revenue, adding an expense, and transferring
money from one category to the next. (3pts)
(b) Dialog boxes and buttons work to carry out the necessary functionalities. (7pts)
(c) Message boxes used appropriately to notify the user of success or failure of a transaction. (2pts)
(d) QTableWidget (housed inside a QScrollArea) used to display the data from the selected category each time a
category is selected from the category combobox or a transaction is carried out. (3pts)
(e) Total computed and displayed inside a QLineEdit based on the selected category. (5pts)
(f) PEP-8 standards followed and OOP concepts used (e.g. each dialog is a separate class/object, and variables and
methods are written using snake_case). (5pts)
(g) Program loads and updates a pie-chart every time changes are made to the data (pie-chart image should be
generated in memory and not saved to a file). (Hints: see slide 85 of the lecture slides on UI for help creating
a pie-chart and go to https://medium.com/swlh/python-stringio-and-bytesio-compared-with-open-
c0e99b9def31 to learn how to generate an image in memory). (5pts)