pyqt_reactive.widgets.shared.responsive_layout_widgets

Responsive layout widgets for PyQt6 - Uses layout config from manager

Functions

is_wrapping_enabled()

Check if responsive wrapping is globally enabled.

set_wrapping_enabled(enabled)

Globally enable or disable responsive wrapping for all parameter rows.

Classes

ResponsiveConfigHeader([parent, color_scheme])

Header widget for config windows that dynamically switches between 1-row and 2-row layout.

ResponsiveParameterRow([width_threshold, ...])

Row for PFM parameters.

ResponsiveRowLayoutMode(*values)

Layout mode for two-row responsive widgets.

ResponsiveTwoRowWidget([width_threshold, ...])

Widget that switches between 1-row (horizontal) and 2-row (vertical) layout.

StagedWrapLayout([parent, spacing])

pyqt_reactive.widgets.shared.responsive_layout_widgets.set_wrapping_enabled(enabled: bool)[source]

Globally enable or disable responsive wrapping for all parameter rows.

pyqt_reactive.widgets.shared.responsive_layout_widgets.is_wrapping_enabled() bool[source]

Check if responsive wrapping is globally enabled.

class pyqt_reactive.widgets.shared.responsive_layout_widgets.ResponsiveRowLayoutMode(*values)[source]

Layout mode for two-row responsive widgets.

HORIZONTAL = 'horizontal'
VERTICAL = 'vertical'
should_switch(available_width: int, content_width: int) bool[source]
next_mode() ResponsiveRowLayoutMode[source]
property uses_second_row: bool
class pyqt_reactive.widgets.shared.responsive_layout_widgets.ResponsiveTwoRowWidget(width_threshold: int = 400, parent=None, layout_config=None)[source]

Widget that switches between 1-row (horizontal) and 2-row (vertical) layout.

__init__(width_threshold: int = 400, parent=None, layout_config=None)[source]
add_left_widget(widget, stretch=0)[source]

Add widget to left side (stays in row1).

add_right_widget(widget, stretch=0)[source]

Add widget to right side (moves between row1 and row2).

eventFilter(watched, event)[source]

Monitor parent resize events.

minimumSizeHint()[source]

Return minimum size for layout calculations.

sizeHint()[source]

Return preferred size - only include visible content.

class pyqt_reactive.widgets.shared.responsive_layout_widgets.ResponsiveParameterRow(width_threshold=350, parent=None, layout_config=None)[source]

Row for PFM parameters.

__init__(width_threshold=350, parent=None, layout_config=None)[source]
set_label(widget)[source]
set_input(widget)[source]
set_reset_button(widget)[source]
set_help_button(widget)[source]
class pyqt_reactive.widgets.shared.responsive_layout_widgets.ResponsiveConfigHeader(parent=None, color_scheme=None)[source]

Header widget for config windows that dynamically switches between 1-row and 2-row layout.

Title stays on row 1. Buttons start on row 1 (single row mode) or move to row 2 (narrow mode). Threshold is dynamically calculated based on actual content width.

Usage:

header = ResponsiveConfigHeader(parent=self) header.set_title(“Configure PipelineConfig”) header.add_button(save_button) header.add_button(cancel_button) layout.addWidget(header)

__init__(parent=None, color_scheme=None)[source]
set_title(text: str)[source]

Set the header title text.

add_button(button: QWidget)[source]

Add a button to the right side (will wrap to second row when narrow).

add_help_button(button: QWidget)[source]

Add a help button next to the title (doesn’t participate in wrapping).

eventFilter(watched, event)[source]

Update threshold when buttons are added or window resizes.

class pyqt_reactive.widgets.shared.responsive_layout_widgets.StagedWrapLayout(parent=None, spacing=4)[source]
__init__(parent=None, spacing=4)[source]
set_groups(groups, stay_priority, right_align_names=None)[source]
resizeEvent(self, a0: QResizeEvent | None)[source]