There would be 2 version of the application: TUI (using mostly standard library) - GUI (using tkiner)
I would try to go the best practice route as possible to take a grasp of industry standard.
Model - Control - View is an easy design pattern to make the code more maintainable
I use Nix to pre-configure my python environment but you can use any thing you like
# python3.12
# pip
# pre-commit
# pyright as my LSP server
# black as my code formatter
# mypy as my code linter
# ruff as my code linter
If you're not using Nix it is recommended to:
- Develop in python virtual environment
- (Optional) Load dependencies with pip by:
pip install -r requirement.txt
chmod +x ./src/main.py
## Run CLI application
./src/main.py
## Run GUI application
./src/main.py -g
./src/main.py --gui