PyQt GUI layout

The production GUI (psc-sim-gui) uses a 4-column PyQt5 + Matplotlib layout:

  1. Parameter inputs (preset, spins, I–V sweep)

  2. Actions (EIS load/fit, metrics, LTspice, export)

  3. Equivalent-circuit schematic

  4. Plot tabs (I–V, SR, Rs, Nyquist, Bode, TRAN)

Columns 1–2 use fixed width (300–380 px) and QScrollArea so controls do not squash on small windows. The plot column uses a larger stretch factor so graphs expand when the window is resized.

Plot refresh uses PlotContext (session + GuiViewState + widget bundles) in psc_sim.gui.plot_context; tab functions accept PlotContext with thin MainWindow wrappers for axis controls.

Debounced parameter edits call refresh_after_param_change (metrics, circuit, active tab only); full refresh_plots runs on preset change and the manual update button.

Full stack notes (scroll policy, QFormLayout, EIS display frequency filter, preset-linked sweeps) are in the repository file:

docs/gui-layout-tech-stack.md