app()— launches Tkinter main loop (entry insrc/argus/main.py)show_menu()— show main menu and clear inputs/resultsshow_calc()/show_conv()— switch viewsact_calculate()— validate inputs and call calculator serviceact_convert()— validate inputs and call conversion service
-
Main window:
root(Tk) -
Frames:
menu_frame— mode selection (Calculator, Converter)app_frame— container forsidebarandcontentsidebar— navigation (Calculator, Converter, Back to menu)content— containscalc_frameandconv_frame
-
Views:
calc_frame— Number1, Number2, Operation entries;Calculatebutton; result labelconv_frame— Amount, Currency1, Currency2 entries;Convertbutton; result label
- User selects a mode on the menu →
show_calc()orshow_conv()displays the view. - User enters values and clicks the action button.
- Handler (
act_calculate()/act_convert()) validates input, then calls the service layer. - Conversion service may call
clients/exchangerate_client.pyto fetch rates; the service returns a value orNone. - UI displays the result or a short error message; navigation returns to menu as needed.
- GUI delegates business logic to
src/argus/services/*and uses the client insrc/argus/clients/for rates.
src/argus/gui/app.py— implementation (UI & handlers)