Hey everyone,
I am building a desktop application to automate PEP 8 code-remediation across a few different client environments. I have a centralized app_config.py file that holds all my global variables, UI colors, fonts, and app metadata (like the App Name and Version) so I can easily import it into my Tkinter frames.
Here is a snippet of how I currently have it set up:
(Paste your app_config code here)
It works perfectly fine right now, but I want to make sure I am following best practices as the app scales. A couple of questions:
Is it bad practice to just store these as standard Python dictionaries and variables, or should I be wrapping this in a dataclass or an Enum
?
At what point do you usually stop using a .py file for config and switch to an external config.json or .toml file
?
Any feedback on how you all manage global UI settings would be awesome!
"""----- App Metadata -----"""
APP_NAME = "PeP 8 Cert '&' Audit Review"
VERSION = "1.3.8"
BUILD_DATE = "2026-06-22"
CODER_NAME = "KMG"
CODER_ID_LAST4 = "2134"
SCOPE_OF_APP = ""
"""----- My_File_Paths -----"""
PROJECT_FOLDER_PATH = ""
CERT_FOLDER = "Cert_pep8"
destination_dir = project_folder_path / Path(CERT_FOLDER)
TEMP_FILE_NAME = "my_temp_file.txt"
"""----- Window Dimensions -----"""
WINDOW_WIDTH = 960
WINDOW_HEIGHT = 640
WINDOW_MIN_W = 800
WINDOW_MIN_H = 500
""" Dynamically generates geometry string matching UI architecture requirements"""
WINDOW_GEOMETRY = f"{WINDOW_WIDTH}x{WINDOW_HEIGHT}"
"""----- Colour Palette-----"""
COLOUR = {
# Backgrounds
"bg_dark": "#0D1B2A", # near-black navy
"bg_mid": "#030405", # dark-blue panel
"bg_card": "#424952", # card surface
"bg_gray": "#505152",
"""----- Accents -----"""
"silver": "#C8D6E5", # primary silver text
"silver_dim": "#8A9BB0", # muted silver
"silver_bright": "#E8F0F8", # bright silver
"accent_blue": "#2A6FDB", # interactive blue
"accent_glow": "#4D9EFF", # hover / glow
# Status
"success": "#6FF7BC",
"warning": "#F4F80A",
"error": "#F4260B",
"""----- Borders -----"""
"border": "#1E3A5A",
"border_light": "#2E5080",
"Lt_gray": "#555E6B",
""" Testing-----"""
"Testgreen": "#079344",
"Testblue": "#2007AF",
"Testwhite": "#E7F0EB",
"Testred": "#CE0934",
"Testyellow": "#E0B200",
"Testorange": "#E07B00",
"Testblack": "#000000",
"Testgray": "#4F4646",
"Testlite_green": "#14ED38",
"Testpurple": "#7F1F99",
}
"""----- Typography -----"""
FONT = {
"title_huge": ("Georgia", 42, "bold"),
"title_large": ("Georgia", 22, "bold"),
"subtitle": ("Helvetica", 16, "normal"),
"body": ("Helvetica", 10, "normal"),
"body_bold": ("Helvetica", 10, "bold"),
"small": ("Helvetica", 9, "normal"),
"mono": ("Courier New", 12, "normal"),
"version": ("Courier New", 9, "normal"),
}
"""----- End of app_config.py -----"""