API 参考
公开 Widget() API 速查。
这页是公开 Widget() API 的签名索引。先用 API 地图 按任务选择能力,再回到这里核对函数名、参数名和返回句柄。
#怎么查
#常用组合
| 目标 | 推荐 API |
|---|---|
| 普通信息卡 | text、value、progress、row、column |
| 精确表格 | table、canvas、path、shape、.place() |
| 可点击状态 | widget.state、button、toggle |
| 可调参数 | widget.param.color/slider/text/bool/choice/file |
| 动态数据 | widget.entry、timeline、content_transition、flip |
| 外观适配 | container_background、content_margins、transparent_background、accentable |
#行为契约
| API | 保证 | 注意 |
|---|---|---|
Widget() | 创建一个小组件根容器,控制背景、边距和整体样式。 | 一个脚本只保留一个最终渲染的小组件。 |
w.render() | 输出当前小组件并结束构建流程。 | 放在脚本末尾;没有调用时预览和发布都不会得到内容。 |
widget.param.* | 在预览面板提供可配置输入,构建时读取当前值。 | 参数不是桌面点击状态;改名后需要重新运行并发布。 |
widget.state.* | 保存桌面交互状态,并为按钮或开关生成安全动作。 | 不要把普通 Python 回调传给桌面按钮。 |
w.button() / w.toggle() | 创建系统允许的点击或开关交互。 | 交互区域要清晰,避免同一区域同时承担链接和按钮。 |
w.timeline() / widget.entry | 声明一组未来显示结果,用于系统刷新和数据更新动画。 | 刷新时机由系统调度,不适合连续动画。 |
widget.family_value() | 为不同 family 选择不同值。 | small、medium、large 内容密度差异大,不要只缩小同一套布局。 |
.line_limit() / .min_scale() | 限制可变文本的行数,并允许文字在小尺寸内缩放。 | 用户可改文本、按钮标题和主值默认都应该加。 |
w.container_background() | 声明系统小组件背景。 | 透明、染色和背景移除是否生效取决于系统宿主环境。 |
#公开 API 速查
| 场景 | 常用 API | 用途 |
|---|---|---|
| 创建和运行 | Widget()、w.render、w.validate、w.timeline | 创建、检查、发布小组件,并声明更新时间线。 |
| 尺寸和数据 | widget.context、widget.entry、widget.param、widget.state、widget.family_value | 读取当前尺寸、时间线数据、参数和桌面交互状态。 |
| 文字和内容 | w.text、w.rich_text、w.value、w.symbol、w.svg、w.image、w.badge | 标题、数值、图标、图片和组合文字。 |
| 图表和进度 | w.progress、w.ring_chart、w.line_chart、w.bar_chart | 进度条、圆环、折线和柱状图。 |
| 布局 | w.row、w.column、w.layer、w.grid、w.table、w.canvas、w.spacer、w.divider | 从自动布局到精确表格、画布定位。 |
| 形状和线条 | w.shape、w.rect、w.circle、w.path;.stroke、.clip_shape、.mask、.reverse_mask | 线宽、虚线、裁切、遮罩和自定义图形。 |
| 交互 | w.button、w.toggle、w.link;widget.action | AppIntent 按钮、开关、链接和状态动作。 |
| 外观 | w.container_background、w.content_margins、w.transparent_background、w.background_image;.accentable、.privacy_sensitive、.redacted | 深色、透明、染色、隐私和占位。 |
| 动画 | w.flip;.content_transition、.animation、.transition、.id | WidgetKit 数据更新动画和稳定身份。 |
| 资源和缓存 | widget.save_image、widget.cache_json、widget.history | 保存图片、缓存网络数据和保留历史值。 |
#完整公开 API 索引
#常量
widget.CIRCULAR:Family: circularwidget.INLINE:Family: inlinewidget.LARGE:Family: largewidget.MEDIUM:Family: mediumwidget.RECTANGULAR:Family: rectangularwidget.SMALL:Family: small
#运行值
widget.action:动作助手,用于创建受控刷新、状态和打开链接动作。widget.color:颜色助手,用于固定色、浅深色和系统角色色。widget.context:当前 family、尺寸和内容区域信息。widget.entry:当前 timeline entry 的字段读取入口。widget.family:当前小组件 family 名称。widget.param:预览面板参数声明入口。widget.state:桌面交互状态声明入口。widget.storage:小组件脚本可用的轻量存储入口。
#函数
#widget.cache_json
已复制
widget.cache_json(
url: str,
*,
ttl: Optional[float] = 3600,
default: Any = None,
params: Optional[Dict[str, Any]] = None,
headers: Optional[Dict[str, str]] = None,
key: Optional[str] = None,
timeout: float = 8,
) -> Any
#widget.family_value
已复制
widget.family_value(default: Any = None, **values: Any) -> Any
#widget.history
已复制
widget.history(
key: str,
value: Any = None,
limit: int = 7,
*,
bucket: Optional[str] = "day",
default: Any = None,
) -> Any
#widget.save_image
已复制
widget.save_image(source: Union[str, bytes], name: str, *, variant: Optional[str] = None) -> str
#Widget 方法
#w.background
已复制
w.background(value: WidgetBackground) -> "Widget"
#w.background_image
已复制
w.background_image(
asset: Optional[ImageLike] = None,
content_mode: str = "fill",
dim: Optional[Union[bool, float]] = None,
scrim: Optional[Union[bool, str]] = None,
scrim_opacity: Optional[float] = None,
focal: str = "center",
overlay_color: ColorLike = "#000000",
*,
light: Optional[str] = None,
dark: Optional[str] = None,
) -> "Widget"
#w.badge
已复制
w.badge(
text: Union[str, int, float],
icon: Optional[str] = None,
tone: str = "accent",
style: str = "plain",
) -> WidgetNode
#w.bar_chart
已复制
w.bar_chart(
values: List[Union[int, float]],
color: Optional[ColorLike] = None,
height: Optional[float] = None,
min_value: Optional[float] = None,
max_value: Optional[float] = None,
spacing: Optional[float] = None,
corner_radius: Optional[float] = None,
track_color: Optional[ColorLike] = None,
opacity: Optional[float] = None,
padding: Optional[Union[int, float]] = None,
frame: Optional[Dict[str, Any]] = None,
segment_colors: Optional[List[ColorLike]] = None,
baseline: Optional[float] = None,
threshold: Optional[float] = None,
labels: Optional[Union[List[Any], Dict[str, Any]]] = None,
label_color: Optional[ColorLike] = None,
) -> WidgetNode
#w.body
已复制
w.body(content: Union[str, int, float]) -> WidgetNode
#w.button
已复制
w.button(
title: Optional[str] = None,
action: Optional[Union[str, WidgetAction]] = None,
url: Optional[str] = None,
color: Optional[ColorLike] = None,
background: Optional[WidgetBackground] = None,
size: Optional[float] = None,
padding: Optional[Union[int, float]] = None,
*,
style: Optional[str] = None,
layout: Optional[str] = None,
press: Optional[Dict[str, Any]] = None,
normal: Optional[Dict[str, Any]] = None,
) -> WidgetNode
#w.canvas
已复制
w.canvas(
height: Optional[float] = None,
coordinate_space: str = "relative",
align: str = "center",
background: Optional[WidgetBackground] = None,
padding: Optional[Union[int, float]] = None,
corner_radius: Optional[float] = None,
border_color: Optional[ColorLike] = None,
border_width: Optional[float] = None,
opacity: Optional[float] = None,
frame: Optional[Dict[str, Any]] = None,
fill: bool = False,
) -> Canvas
#w.caption
已复制
w.caption(content: Union[str, int, float]) -> WidgetNode
#w.change
已复制
w.change(
primary: Union[str, int, float],
secondary: Optional[Union[str, int, float]] = None,
direction: Optional[str] = None,
) -> WidgetNode
#w.circle
已复制
w.circle(
color: Optional[ColorLike] = None,
size: Optional[float] = None,
opacity: Optional[float] = None,
padding: Optional[Union[int, float]] = None,
frame: Optional[Dict[str, Any]] = None,
border_color: Optional[ColorLike] = None,
border_width: Optional[float] = None,
) -> WidgetNode
#w.column
已复制
w.column(
spacing: Optional[Union[int, float]] = None,
align: Optional[str] = None,
) -> WidgetContainer
#w.container_background
已复制
w.container_background(
value: Optional[WidgetBackground] = None,
*,
removable: Optional[bool] = None,
) -> "Widget"
#w.content_margins
已复制
w.content_margins(
enabled: bool = True,
padding: Optional[Union[int, float, Sequence[float], Dict[str, float]]] = None,
) -> "Widget"
#w.context
已复制
w.context -> WidgetContext
#w.countdown
已复制
w.countdown(
title: Optional[Union[str, int, float]] = "Countdown",
target: Optional[Union[datetime, str]] = None,
subtitle: Optional[Union[str, int, float]] = None,
icon: Optional[str] = None,
tone: Optional[str] = None,
accent: Optional[ColorLike] = None,
) -> WidgetBlock
#w.date
已复制
w.date(target: Optional[Union[datetime, str]] = None, style: str = "date") -> WidgetNode
#w.divider
已复制
w.divider(color: Optional[ColorLike] = None, opacity: Optional[float] = None, ) -> WidgetNode
#w.dynamic_date
已复制
w.dynamic_date(target: Optional[Union[datetime, str]] = None, style: str = "date") -> WidgetNode
#w.flip
已复制
w.flip(
value: Any,
previous: Optional[Any] = None,
*,
direction: str = "up",
width: Optional[float] = None,
height: Optional[float] = None,
size: Optional[float] = None,
weight: str = "bold",
color: Optional[ColorLike] = None,
background: Optional[WidgetBackground] = None,
corner_radius: Optional[float] = None,
duration: float = 0.55,
delta: Optional[float] = None,
perspective: float = 0.62,
shadow_opacity: float = 0.18,
padding: Optional[Union[int, float]] = None,
frame: Optional[Dict[str, Any]] = None,
design: Optional[str] = "monospaced",
) -> WidgetNode
#w.grid
已复制
w.grid(
columns: int = 2,
spacing: Optional[Union[int, float]] = None,
row_spacing: Optional[Union[int, float]] = None,
column_spacing: Optional[Union[int, float]] = None,
align: Optional[str] = None,
padding: Optional[Union[int, float]] = None,
background: Optional[WidgetBackground] = None,
opacity: Optional[float] = None,
corner_radius: Optional[float] = None,
border_color: Optional[ColorLike] = None,
border_width: Optional[float] = None,
url: Optional[str] = None,
shadow_color: Optional[ColorLike] = None,
shadow_radius: Optional[float] = None,
shadow_x: float = 0,
shadow_y: float = 2,
rows: Optional[int] = None,
equal: bool = False,
fill: bool = False,
) -> WidgetContainer
#w.image
已复制
w.image(
name: Optional[ImageLike] = None,
width: Optional[float] = None,
height: Optional[float] = None,
corner_radius: Optional[float] = None,
opacity: Optional[float] = None,
padding: Optional[Union[int, float]] = None,
content_mode: Optional[str] = None,
*,
light: Optional[str] = None,
dark: Optional[str] = None,
rendering_mode: Optional[str] = None,
) -> WidgetNode
#w.layer
已复制
w.layer(
align: str = "center",
padding: Optional[Union[int, float]] = None,
background: Optional[WidgetBackground] = None,
corner_radius: Optional[float] = None,
) -> WidgetContainer
#w.line_chart
已复制
w.line_chart(
values: List[Union[int, float]],
color: Optional[ColorLike] = None,
height: Optional[float] = None,
min_value: Optional[float] = None,
max_value: Optional[float] = None,
fill: bool = True,
show_points: bool = True,
line_width: Optional[float] = None,
track_color: Optional[ColorLike] = None,
opacity: Optional[float] = None,
padding: Optional[Union[int, float]] = None,
frame: Optional[Dict[str, Any]] = None,
segment_colors: Optional[List[ColorLike]] = None,
baseline: Optional[float] = None,
threshold: Optional[float] = None,
labels: Optional[Union[List[Any], Dict[str, Any]]] = None,
label_color: Optional[ColorLike] = None,
) -> WidgetNode
#w.link
已复制
w.link(
title: str,
url: str,
icon: Optional[str] = None,
color: Optional[ColorLike] = None,
) -> Union[WidgetNode, WidgetContainer]
#w.list
已复制
w.list(
items: List[Any],
title: Optional[Union[str, int, float]] = None,
limit: Optional[int] = None,
empty_text: Optional[Union[str, int, float]] = None,
dividers: bool = False,
) -> WidgetContainer
#w.path
已复制
w.path(
points: List[PathPoint],
stroke: Optional[ColorLike] = None,
fill: Optional[ColorLike] = None,
line_width: Optional[Union[float, str]] = None,
closed: bool = False,
height: Optional[float] = None,
coordinate_space: str = "relative",
opacity: Optional[float] = None,
padding: Optional[Union[int, float]] = None,
frame: Optional[Dict[str, Any]] = None,
line_cap: Optional[str] = None,
line_join: Optional[str] = None,
dash: Optional[Sequence[float]] = None,
miter_limit: Optional[float] = None,
) -> WidgetNode
#w.progress
已复制
w.progress(
value: Union[int, float],
total: float = 1.0,
color: Optional[ColorLike] = None,
height: Optional[float] = None,
track_color: Optional[ColorLike] = None,
*,
title: Optional[str] = None,
subtitle: Optional[str] = None,
unit: Optional[str] = None,
icon: Optional[str] = None,
tone: Optional[str] = None,
accent: Optional[str] = None,
style: Optional[str] = None,
) -> WidgetNode
#w.rect
已复制
w.rect(
color: Optional[ColorLike] = None,
width: Optional[float] = None,
height: Optional[float] = None,
corner_radius: Optional[float] = None,
opacity: Optional[float] = None,
padding: Optional[Union[int, float]] = None,
frame: Optional[Dict[str, Any]] = None,
border_color: Optional[ColorLike] = None,
border_width: Optional[float] = None,
) -> WidgetNode
#w.region
已复制
w.region(
slot: str = "center",
spacing: Optional[Union[int, float]] = None,
align: Optional[str] = None,
) -> WidgetContainer
#w.relative_time
已复制
w.relative_time(target: Optional[Union[datetime, str]] = None) -> WidgetNode
#w.render
已复制
w.render(url: Optional[str] = None) -> None
#w.rich_text
已复制
w.rich_text(
parts: List[RichTextPart],
size: Optional[float] = None,
weight: Optional[str] = None,
color: Optional[ColorLike] = None,
align: Optional[str] = None,
max_lines: Optional[int] = None,
design: Optional[str] = None,
opacity: Optional[float] = None,
padding: Optional[Union[int, float]] = None,
frame: Optional[Dict[str, Any]] = None,
minimum_scale_factor: Optional[float] = None,
font_width: Optional[str] = None,
) -> WidgetNode
#w.ring_chart
已复制
w.ring_chart(
value: Union[int, float],
total: float = 1.0,
label: Optional[str] = None,
color: Optional[ColorLike] = None,
track_color: Optional[ColorLike] = None,
size: Optional[float] = None,
line_width: Optional[float] = None,
opacity: Optional[float] = None,
padding: Optional[Union[int, float]] = None,
frame: Optional[Dict[str, Any]] = None,
) -> WidgetNode
#w.row
已复制
w.row(
spacing: Optional[Union[int, float]] = None,
align: Optional[str] = None,
) -> WidgetContainer
#w.section
已复制
w.section(
title: Optional[Union[str, int, float]] = None,
spacing: Optional[Union[int, float]] = None,
subtitle: Optional[Union[str, int, float]] = None,
style: Optional[str] = None,
) -> WidgetContainer
#w.shape
已复制
w.shape(
kind: str = "rectangle",
color: Optional[ColorLike] = None,
width: Optional[float] = None,
height: Optional[float] = None,
size: Optional[float] = None,
corner_radius: Optional[float] = None,
opacity: Optional[float] = None,
padding: Optional[Union[int, float]] = None,
frame: Optional[Dict[str, Any]] = None,
border_color: Optional[ColorLike] = None,
border_width: Optional[float] = None,
shadow_color: Optional[ColorLike] = None,
shadow_radius: Optional[float] = None,
shadow_x: float = 0,
shadow_y: float = 2,
stroke_color: Optional[ColorLike] = None,
stroke_width: Optional[Union[float, str]] = None,
dash: Optional[Sequence[float]] = None,
line_cap: Optional[str] = None,
line_join: Optional[str] = None,
miter_limit: Optional[float] = None,
top_leading_radius: Optional[float] = None,
top_trailing_radius: Optional[float] = None,
bottom_leading_radius: Optional[float] = None,
bottom_trailing_radius: Optional[float] = None,
) -> WidgetNode
#w.spacer
已复制
w.spacer(length: Optional[Union[int, float]] = None) -> WidgetNode
#w.surface
已复制
w.surface(
role: str = "panel",
spacing: Optional[Union[int, float]] = None,
align: Optional[str] = None,
padding: Optional[Union[int, float]] = None,
background: Optional[WidgetBackground] = None,
corner_radius: Optional[float] = None,
border_color: Optional[ColorLike] = None,
border_width: Optional[float] = None,
shadow_color: Optional[ColorLike] = None,
shadow_radius: Optional[float] = None,
) -> WidgetContainer
#w.svg
已复制
w.svg(
name: Optional[ImageLike] = None,
width: Optional[float] = None,
height: Optional[float] = None,
color: Optional[ColorLike] = None,
opacity: Optional[float] = None,
padding: Optional[Union[int, float]] = None,
content_mode: str = "fit",
*,
light: Optional[str] = None,
dark: Optional[str] = None,
) -> WidgetNode
#w.symbol
已复制
w.symbol(
name: str,
rendering: Optional[str] = None,
palette: Optional[Sequence[ColorLike]] = None,
variant: Optional[str] = None,
scale: Optional[str] = None,
) -> WidgetNode
#w.table
已复制
w.table(
rows: int,
columns: int,
*,
line_color: Optional[ColorLike] = None,
line_width: Union[float, str] = "hairline",
line_cap: str = "butt",
line_join: str = "miter",
dash: Optional[Sequence[float]] = None,
miter_limit: Optional[float] = None,
padding: Optional[Union[int, float]] = None,
frame: Optional[Dict[str, Any]] = None,
width: Optional[float] = None,
height: Optional[float] = None,
background: Optional[WidgetBackground] = None,
opacity: Optional[float] = None,
corner_radius: Optional[float] = None,
border: bool = True,
fill: bool = True,
align: str = "center",
) -> Table
#w.text
已复制
w.text(
content: Union[str, int, float],
size: Optional[float] = None,
weight: Optional[str] = None,
color: Optional[ColorLike] = None,
align: Optional[str] = None,
max_lines: Optional[int] = None,
design: Optional[str] = None,
opacity: Optional[float] = None,
padding: Optional[Union[int, float]] = None,
frame: Optional[Dict[str, Any]] = None,
minimum_scale_factor: Optional[float] = None,
font_width: Optional[str] = None,
) -> WidgetNode
#w.time
已复制
w.time(target: Optional[Union[datetime, str]] = None) -> WidgetNode
#w.timeline
已复制
w.timeline(
entries: Optional[List[Dict[str, Any]]] = None,
*,
update: str = "after",
after: Any = None,
interval: Optional[float] = None,
) -> "Widget"
#w.timer_text
已复制
w.timer_text(target: Optional[Union[datetime, str]] = None) -> WidgetNode
#w.title
已复制
w.title(content: Union[str, int, float]) -> WidgetNode
#w.toggle
已复制
w.toggle(
title: Optional[str] = None,
is_on: Union[bool, str] = False,
action: Optional[Union[str, WidgetAction]] = None,
url: Optional[str] = None,
color: Optional[ColorLike] = None,
background: Optional[WidgetBackground] = None,
size: Optional[float] = None,
padding: Optional[Union[int, float]] = None,
*,
value: Optional[Union[bool, str]] = None,
state: Optional[State[bool]] = None,
style: Optional[str] = None,
layout: Optional[str] = None,
press: Optional[Dict[str, Any]] = None,
normal: Optional[Dict[str, Any]] = None,
) -> WidgetNode
#w.transparent_background
已复制
w.transparent_background(enabled: bool = True) -> "Widget"
#w.unless
已复制
w.unless(*families: str, layout: str = "layer") -> WidgetContainer
#w.validate
已复制
w.validate(family: Optional[str] = None) -> Dict[str, Any]
#w.value
已复制
w.value(
value: Union[str, int, float, State[int], State[float], State[str], State[str]],
unit: Optional[str] = None,
subtitle: Optional[str] = None,
format: Optional[str] = None,
) -> WidgetNode
#w.when
已复制
w.when(*families: str, layout: str = "layer") -> WidgetContainer
#修饰符
#.accentable
已复制
.accentable(enabled: bool = True) -> Self
#.accessibility
已复制
.accessibility(
label: Optional[str] = None,
value: Optional[str] = None,
hint: Optional[str] = None,
hidden: Optional[bool] = None,
) -> Self
#.align
已复制
.align(value: str) -> Self
#.animation
已复制
.animation(
value: str = "default",
*,
duration: Optional[float] = None,
value_by: Optional[Any] = None,
) -> Self
#.background
已复制
.background(value: WidgetBackground) -> Self
#.bar_spacing
已复制
.bar_spacing(value: float) -> Self
#.baseline
已复制
.baseline(value: float = 0, color: Optional[ColorLike] = None) -> Self
#.button_style
已复制
.button_style(value: str = "plain") -> Self
#.capsule
已复制
.capsule(tone: Optional[str] = None, padding: Optional[Union[int, float]] = None, ) -> Self
#.clip
已复制
.clip(kind: str = "roundedRectangle", corner_radius: Optional[float] = None) -> Self
#.clip_shape
已复制
.clip_shape(kind: str = "roundedRectangle", corner_radius: Optional[float] = None) -> Self
#.color
已复制
.color(value: ColorLike) -> Self
#.compressed
已复制
.compressed(enabled: bool = True) -> Self
#.content_transition
已复制
.content_transition(value: str = "opacity") -> Self
#.control_layout
已复制
.control_layout(value: str = "overlay") -> Self
#.control_style
已复制
.control_style(value: str = "plain") -> Self
#.corner_radius
已复制
.corner_radius(value: float) -> Self
#.fill
已复制
.fill(enabled: bool = True) -> Self
#.fixed_size
已复制
.fixed_size(horizontal: bool = True, vertical: bool = True) -> Self
#.font
已复制
.font(
value: Optional[Union[str, int, float, Dict[str, Any]]] = None,
*,
size: Optional[Union[float, Dict[str, Any]]] = None,
weight: Optional[str] = None,
**size_values: Any,
) -> Self
#.font_size
已复制
.font_size(size: float) -> Self
#.font_style
已复制
.font_style(style: str) -> Self
#.font_weight
已复制
.font_weight(weight: str) -> Self
#.font_width
已复制
.font_width(width: str) -> Self
#.frame
已复制
.frame(
x: float = 0,
y: float = 0,
width: Optional[float] = None,
height: Optional[float] = None,
*,
inset: Union[int, float] = 0,
) -> _CanvasFrame
#.grid
已复制
.grid(
rows: int,
columns: int,
*,
padding: Union[int, float] = 0,
gap: Union[int, float] = 0,
row_gap: Optional[float] = None,
column_gap: Optional[float] = None,
line_width: Optional[float] = None,
border: bool = False,
x: float = 0,
y: float = 0,
width: Optional[float] = None,
height: Optional[float] = None,
) -> CanvasGrid
#.guide_lines
已复制
.guide_lines(count: Union[bool, int] = True, color: Optional[ColorLike] = None) -> Self
#.height
已复制
.height(value: Optional[Union[float, Dict[str, Any]]] = None, **values: Any) -> Self
#.hide
已复制
.hide(*families: str) -> Self
#.id
已复制
.id(value: Any) -> Self
#.importance
已复制
.importance(value: str = "primary") -> Self
#.intent
已复制
.intent(action: Union[str, WidgetAction]) -> Self
#.labels
已复制
.labels(
start: Optional[Union[str, int, float]] = None,
end: Optional[Union[str, int, float]] = None,
color: Optional[ColorLike] = None,
) -> Self
#.layout_priority
已复制
.layout_priority(value: float = 1) -> Self
#.line_limit
已复制
.line_limit(value: int) -> Self
#.line_width
已复制
.line_width(value: Union[float, str]) -> Self
#.link
已复制
.link(url: str) -> Self
#.mask
已复制
.mask(kind: str = "roundedRectangle", corner_radius: Optional[float] = None) -> Self
#.mask_view
已复制
.mask_view(align: str = "center") -> WidgetContainer
#.min_scale
已复制
.min_scale(value: float) -> Self
#.monospaced
已复制
.monospaced(enabled: bool = True) -> Self
#.monospaced_digit
已复制
.monospaced_digit(enabled: bool = True) -> Self
#.normal
已复制
.normal(**style: Any) -> Self
#.offset
已复制
.offset(x: float = 0, y: float = 0) -> Self
#.opacity
已复制
.opacity(value: float) -> Self
#.overflow
已复制
.overflow(
action: Optional[str] = None,
*,
importance: Optional[str] = None,
preserve: Optional[bool] = None,
) -> Self
#.overlay
已复制
.overlay(color: ColorLike = "#000000", opacity: float = 0.18) -> Self
#.overlay_view
已复制
.overlay_view(align: str = "center") -> WidgetContainer
#.padding
已复制
.padding(
value: Optional[Union[int, float]] = None,
*,
horizontal: Optional[float] = None,
vertical: Optional[float] = None,
top: Optional[float] = None,
leading: Optional[float] = None,
bottom: Optional[float] = None,
trailing: Optional[float] = None,
) -> Self
#.palette
已复制
.palette(colors: Sequence[ColorLike]) -> Self
#.pixel_perfect_center
已复制
.pixel_perfect_center(enabled: bool = True) -> Self
#.place
已复制
.place(x: Optional[float] = None, y: Optional[float] = None, unit: str = "relative") -> Self
#.plain
已复制
.plain(enabled: bool = True) -> Self
#.points
已复制
.points(enabled: bool = True) -> Self
#.position
已复制
.position(x: Optional[float] = None, y: Optional[float] = None, unit: str = "points") -> Self
#.preserve
已复制
.preserve(enabled: bool = True) -> Self
#.pressed
已复制
.pressed(**style: Any) -> Self
#.privacy_sensitive
已复制
.privacy_sensitive(enabled: bool = True) -> Self
#.redacted
已复制
.redacted(reason: str = "placeholder") -> Self
#.rendering
已复制
.rendering(mode: str, colors: Optional[Sequence[ColorLike]] = None) -> Self
#.reverse_mask
已复制
.reverse_mask(kind: str = "roundedRectangle", corner_radius: Optional[float] = None) -> Self
#.rotate
已复制
.rotate(degrees: float) -> Self
#.rotation
已复制
.rotation(degrees: float) -> Self
#.scale
已复制
.scale(value: Union[float, str]) -> Self
#.segment_colors
已复制
.segment_colors(colors: List[ColorLike]) -> Self
#.shadow
已复制
.shadow(color: ColorLike = "#000000", radius: float = 4, x: float = 0, y: float = 2, ) -> Self
#.slot
已复制
.slot(value: str) -> Self
#.soft_background
已复制
.soft_background(
tone: Optional[str] = None,
corner_radius: Optional[float] = None,
padding: Optional[Union[int, float]] = None,
) -> Self
#.stroke
已复制
.stroke(
color: Optional[ColorLike] = None,
*,
width: Optional[Union[float, str]] = None,
dash: Optional[Sequence[float]] = None,
cap: Optional[str] = None,
join: Optional[str] = None,
miter_limit: Optional[float] = None,
) -> Self
#.threshold
已复制
.threshold(value: float, color: Optional[ColorLike] = None) -> Self
#.toggle_style
已复制
.toggle_style(value: str = "checkbox") -> Self
#.tone
已复制
.tone(value: str) -> Self
#.track_color
已复制
.track_color(value: ColorLike) -> Self
#.transition
已复制
.transition(value: str = "opacity", edge: Optional[str] = None) -> Self
#.variant
已复制
.variant(value: str) -> Self
#.width
已复制
.width(value: Optional[Union[float, Dict[str, Any]]] = None, **values: Any) -> Self
#内容和文字
文字节点返回的是可继续修改的句柄:
已复制
w.text("ADHD Bingo", size=28, weight="bold", color="#242326") \
.line_limit(1) \
.min_scale(0.7)
数值用 value(),需要数字变化动画时加 content_transition("numericText") 和稳定身份:
已复制
w.value(count, format="{} 次") \
.id("count") \
.monospaced_digit() \
.content_transition("numericText") \
.line_limit(1) \
.min_scale(0.7)
#修饰顺序
推荐顺序是:内容 -> 字体和颜色 -> 尺寸 -> 位置 -> 动画或交互。
已复制
w.text("喝水") \
.font_size(16) \
.color("#242326") \
.line_limit(1) \
.min_scale(0.7) \
.frame(width=72, height=44) \
.place(120, 80, unit="points")
#什么时候用精确布局
信息卡、进度卡、列表优先用 row()、column()、grid()。需要做表格、键盘、翻页钟、海报式排版时,用 table()、canvas()、.frame() 和 .place() 读取 w.context 后按点位布局。