boxes.box¶
-
class
boxes.box.Box(context, rect=None, aspect=None, **kwargs)¶ Represents a rectangle in the latout. The position of the rectangle is given by the
rectproperty.All keyword arguments to the constructor are optional, and the same effect can be obtained by later constraining the box.
Parameters: - context (boxes.context.Context) – The context the box belongs to.
- rect (boxes.cartesian.Rect) – Explicitly locate the box.
- aspect (float) – Forwarded to
boxes.constrain.aspect().
In addition, any property of
Rectcan be used as a keyword argument to the constructor, which will introduce a constraint.Note, that
Boxinstances can also be obtained by calling thebox()method of aContextinstance.Methods
-
solve(fix_upper_left=True)¶ Calling this method has two effects:
- If fix_upper_left is True (the default), a constraint is added
setting
self.loc == (0, 0). solve()is called onBox.context.
>>> from boxes import Context >>> ctx = Context() >>> box = ctx.box(size=(6.0, 10.0)) >>> (box.width, box.height) (Expr(x1 - x3), Expr(-x0 + x2)) >>> box.solve() >>> (box.width, box.height) (6.0, 10.0)
- If fix_upper_left is True (the default), a constraint is added
setting
-
fix(other)¶ Constrain this box and other to have the same size and position.
-
pad(*args)¶ Construct a new box similar to this, but smaller by the given amount.
The method can be called in four different ways (similar to how margins and padding is specified in css files):
box.pad(all)box.pad(vert, hor)box.pad(top, hor, bottom)box.pad(top, right, bottom, left)
Simple example
>>> from boxes import * >>> ctx = Context() >>> outer_box = ctx.box(width=10) >>> inner_box = ctx.box(height=4) >>> outer_box.pad(0.5).fix(inner_box) >>> outer_box.solve() >>> print(outer_box.loc, outer_box.size) (0.0, 0.0) (10.0, 5.0) >>> print(inner_box.loc, inner_box.size) (0.5, 0.5) (9.0, 4.0)
Center a box inside another
>>> from boxes import * >>> ctx = Context() >>> outer_box = ctx.box(size=(6, 5)) >>> inner_box = ctx.box(size=(4, 4)) >>> outer_box.pad(ctx.sym(), ctx.sym()).fix(inner_box) >>> outer_box.solve() >>> print(outer_box.loc, outer_box.size) (0.0, 0.0) (6.0, 5.0) >>> print(inner_box.loc, inner_box.size) (1.0, 0.5) (4.0, 4.0)
Properties
-
rect¶ The position of the box as a
boxes.cartesian.Rectinstance. The dimensions of rect are expressions of typesymmath.expr.Expruntil yousolve()the context.
-
width, height, top, right, bottom, left, loc, and size Any property of
rectis also made a property of this class.
-
context¶ The
boxes.context.Contextof this box.