Skip to content

Path

Examples#

See these.

Path #

Bases: Shape

Draws a path with given elements with the given paint.

Whether this shape is filled, stroked, or both, is controlled by paint.style. If the path is filled, then sub-paths within it are implicitly closed (see Path.Close).

data #

data: Any = skip_field()

Arbitrary data of any type.

elements #

elements: list[PathElement] = field(default_factory=list)

The list of path elements.

key #

key: (
    str | int | float | bool | ValueKey | ScrollKey | None
) = None

page #

page: Page | PageView | None

The page (of type Page or PageView) to which this control belongs to.

paint #

paint: Paint = field(default_factory=lambda: Paint())

A style to draw a path with.

parent #

parent: BaseControl | None

The direct ancestor(parent) of this control.

It defaults to None and will only have a value when this control is mounted (added to the page tree).

The Page control (which is the root of the tree) is an exception - it always has parent=None.

Arc #

Bases: PathElement

Adds a new sub-path with one arc segment that consists of the arc that follows the edge of the oval bounded by the given rectangle with top left corner at x and y and dimensions width and height, from start_angle radians around the oval up to start_angle + sweep_angle radians around the oval, with zero radians being the point on the right hand side of the oval that crosses the horizontal line that intersects the center of the rectangle and with positive angles going clockwise around the oval.

height #

height: float

Height of the rectangle bounding the arc.

start_angle #

start_angle: float

Starting angle in radians of the arc.

sweep_angle #

sweep_angle: float

Sweep angle in radians from start_angle.

width #

width: float

Width of the rectangle bounding the arc.

x #

x: float

Top-left corner x of the rectangle bounding the arc.

y #

y: float

Top-left corner y of the rectangle bounding the arc.

ArcTo #

Bases: PathElement

Appends up to four conic curves weighted to describe an oval of radius and rotated by rotation (measured in degrees and clockwise).

The first curve begins from the last point in the path and the last ends at x and y. The curves follow a path in a direction determined by clockwise (bool) and large_arc (bool) in such a way that the sweep angle is always less than 360 degrees.

A simple line is appended if either either radii are zero or the last point in the path (x,y). The radii are scaled to fit the last path point if both are greater than zero but too small to describe an arc.

clockwise #

clockwise: bool = True

Whether the arc should be drawn clockwise.

large_arc #

large_arc: bool = False

Whether to use the large arc sweep.

radius #

radius: float = 0

Radius of the arc.

rotation #

rotation: float = 0

Rotation of the arc in degrees.

x #

x: float

Destination x coordinate of arc endpoint.

y #

y: float

Destination y coordinate of arc endpoint.

Close #

Bases: PathElement

Closes the last sub-path, as if a straight line had been drawn from the current point to the first point of the sub-path.

CubicTo #

Bases: PathElement

Adds a cubic bezier segment that curves from the current point to the given point (x,y), using the control points (cp1x,cp1y) and (cp2x,cp2y).

cp1x #

cp1x: float

cp1y #

cp1y: float

cp2x #

cp2x: float

cp2y #

cp2y: float

x #

x: float

y #

y: float

LineTo #

Bases: PathElement

Adds a straight line segment from the current point to the given point (x,y).

x #

x: float

y #

y: float

MoveTo #

Bases: PathElement

Starts a new sub-path at the given point (x,y).

x #

x: float

y #

y: float

Oval #

Bases: PathElement

Adds a new sub-path that consists of a curve that forms the ellipse that fills the given rectangle.

height #

height: float

Height of the bounding rectangle.

width #

width: float

Width of the bounding rectangle.

x #

x: float

The x-axis coordinate of the top-left of the bounding rectangle.

y #

y: float

The y-axis coordinate of the top-left of the bounding rectangle.

PathElement #

QuadraticTo #

Bases: PathElement

Adds a bezier segment that curves from the current point to the given point (x,y), using the control points (cp1x,cp1y) and the weight w.

cp1x #

cp1x: float

cp1y #

cp1y: float

w #

w: float = 1

If the weight is greater than 1, then the curve is a hyperbola; if the weight equals 1, it's a parabola; and if it is less than 1, it is an ellipse.

x #

x: float

y #

y: float

Rect #

Bases: PathElement

Adds a rectangle as a new sub-path.

border_radius #

border_radius: BorderRadiusValue | None = None

Optional border radius to round rectangle corners.

height #

height: float

Height of the rectangle.

width #

width: float

Width of the rectangle.

x #

x: float

The x-axis coordinate of the top-left of the rectangle.

y #

y: float

The y-axis coordinate of the top-left of the rectangle.

SubPath #

Bases: PathElement

Adds the sub-path described by elements to the given point (x,y).

elements #

elements: list[PathElement]

x #

x: float

y #

y: float

before_event #

before_event(e: ControlEvent)

before_update #

before_update()

This method is called every time when this control is being updated.

Note

Make sure not to call/request an update() here.

did_mount #

did_mount()

init #

init()

is_isolated #

is_isolated()

update #

update() -> None

will_unmount #

will_unmount()