Skip to content

ScrollableControl

Inherits: Control

Properties

Events

Methods

Properties#

auto_scroll class-attribute instance-attribute #

auto_scroll: bool = False

Whether the scrollbar should automatically move its position to the end when children updated.

Note

Must be False for scroll_to() method to work.

scroll class-attribute instance-attribute #

scroll: Optional[ScrollMode] = None

Enables a vertical scrolling for the Column to prevent its content overflow.

scroll_interval class-attribute instance-attribute #

scroll_interval: Number = 10

Throttling in milliseconds for on_scroll event.

Events#

on_scroll class-attribute instance-attribute #

on_scroll: Optional[EventHandler[OnScrollEvent]] = None

Called when scroll position is changed by a user.

Methods#

scroll_to async #

scroll_to(
    offset: Optional[float] = None,
    delta: Optional[float] = None,
    scroll_key: Union[
        ScrollKey, str, int, float, bool, None
    ] = None,
    duration: DurationValue = 0,
    curve: AnimationCurve = EASE,
)

Moves the scroll position.

Parameters:

  • offset (Optional[float], default: None ) –

    Absolute scroll target in pixels. A negative value is interpreted relative to the end (e.g. -1 to jump to the very end).

  • delta (Optional[float], default: None ) –

    Relative scroll change in pixels. Positive values scroll forward, negative values scroll backward.

  • scroll_key (Union[ScrollKey, str, int, float, bool, None], default: None ) –

    Key of the target control to scroll to.

  • duration (DurationValue, default: 0 ) –

    The scroll animation duration.

  • curve (AnimationCurve, default: EASE ) –

    The scroll animation curve.

Notes
  • Exactly one of offset, delta or scroll_key should be provided.
  • auto_scroll must be False.
  • This method is ineffective for controls (e.g. ListView, GridView) that build items dynamically.

Examples:

await products.scroll_to(offset=100, duration=1000)
await products.scroll_to(offset=-1, duration=1000)  # to the end
await products.scroll_to(delta=50)  # forward 50px
await products.scroll_to(scroll_key="item_20", duration=500)