import tkinter as tk from tkinter import ttk from typing import TYPE_CHECKING from core.gui.themes import FRAME_PAD, PADX, PADY if TYPE_CHECKING: from core.gui.app import Application class InfoFrameBase(ttk.Frame): def __init__(self, master: tk.BaseWidget, app: "Application") -> None: super().__init__(master, padding=FRAME_PAD) self.app: "Application" = app def draw(self) -> None: raise NotImplementedError class DetailsFrame(ttk.Frame): def __init__(self, master: tk.BaseWidget) -> None: super().__init__(master) self.columnconfigure(1, weight=1) self.row = 0 def add_detail(self, label: str, value: str) -> None: label = ttk.Label(self, text=label, anchor=tk.W) label.grid(row=self.row, sticky=tk.EW, column=0, padx=PADX) label = ttk.Label(self, text=value, anchor=tk.W, state=tk.DISABLED) label.grid(row=self.row, sticky=tk.EW, column=1) self.row += 1 def add_separator(self) -> None: separator = ttk.Separator(self) separator.grid(row=self.row, sticky=tk.EW, columnspan=2, pady=PADY) self.row += 1