网格 API
LazyVGrid、LazyHGrid、Grid、GridRow 和轨道辅助函数。
LazyVGrid / LazyHGrid / Grid / GridRow 与轨道辅助函数 flexible / fixed / adaptive / grid_item。
#LazyVGrid
签名
已复制
LazyVGrid(columns=None, content=None, spacing=None, children=None)
参数
| 参数 | 类型 | 说明 |
|---|---|---|
columns | list[dict] \| None | 列描述列表;缺省为 [{'type': 'flexible'}]。 |
content / children | list[View] \| None | 网格单元视图。 |
spacing | 数值 \| None | 单元间距。 |
示例
已复制
import appui
cols = [
appui.flexible(minimum=40),
appui.flexible(minimum=40),
appui.fixed(50),
]
def body():
return appui.LazyVGrid(
columns=cols,
spacing=8,
content=[appui.Text(str(i)).frame(max_width=appui.infinity) for i in range(12)],
).padding()
appui.run(body, presentation="sheet")
参阅:flexible、fixed、adaptive、LazyHGrid
#LazyHGrid
签名
已复制
LazyHGrid(rows=None, content=None, spacing=None, children=None)
参数
| 参数 | 类型 | 说明 |
|---|---|---|
rows | list[dict] \| None | 行描述;缺省为 [{'type': 'flexible'}]。 |
content / children | list[View] \| None | 子视图。 |
spacing | 数值 \| None | 间距。 |
示例
已复制
import appui
rows = [appui.flexible(), appui.fixed(36)]
def body():
return appui.LazyHGrid(
rows=rows,
spacing=6,
content=[appui.Text(f"({i})") for i in range(8)],
).padding()
appui.run(body, presentation="sheet")
#Grid
签名
已复制
Grid(content=None, alignment='center', horizontal_spacing=None, vertical_spacing=None,
horizontalSpacing=None, verticalSpacing=None)
参数
| 参数 | 类型 | 说明 |
|---|---|---|
content | list[View] \| None | 通常由若干 GridRow 组成。 |
alignment | str | 单元格对齐。 |
horizontal_spacing / vertical_spacing | 数值 \| None | 行/列间距。 |
示例
已复制
import appui
def body():
return appui.Grid(
content=[
appui.GridRow([appui.Text("A1"), appui.Text("B1")]),
appui.GridRow([appui.Text("A2"), appui.Text("B2")]),
],
horizontal_spacing=12,
vertical_spacing=8,
).padding()
appui.run(body, presentation="sheet")
#GridRow
签名
已复制
GridRow(content=None, alignment=None)
参数
| 参数 | 类型 | 说明 |
|---|---|---|
content | list[View] \| None | 一行中的单元视图。 |
alignment | str \| None | 行内对齐;None 表示默认。 |
示例
见 Grid。
#flexible
签名
已复制
flexible(minimum=10, maximum=None)
参数
| 参数 | 类型 | 说明 |
|---|---|---|
minimum | 数值 | 轨道最小尺寸。 |
maximum | 数值 \| None | 最大尺寸;None 表示不限制。 |
示例
已复制
import appui
row = [appui.flexible(minimum=60), appui.fixed(44)]
print(row[0]["type"], row[1]["type"])
#fixed
签名
已复制
fixed(size)
参数
| 参数 | 类型 | 说明 |
|---|---|---|
size | 数值 | 固定轨道尺寸。 |
示例
已复制
import appui
c = appui.fixed(120)
assert c["type"] == "fixed"
#adaptive
签名
已复制
adaptive(minimum=50, maximum=None)
参数
| 参数 | 类型 | 说明 |
|---|---|---|
minimum | 数值 | 每个自适应单元最小宽度。 |
maximum | 数值 \| None | 可选上限。 |
示例
已复制
import appui
cols = [appui.adaptive(minimum=80)]
print(len(cols), cols[0]["type"])
#grid_item
签名
已复制
grid_item(type='flexible', minimum=None, maximum=None, count=None)
参数
| 参数 | 类型 | 说明 |
|---|---|---|
type | str | 轨道类型:'flexible'、'fixed'、'adaptive'。 |
minimum | 数值 \| None | 轨道最小尺寸。 |
maximum | 数值 \| None | 轨道最大尺寸;None 表示不限制。 |
count | int \| None | 用于 adaptive 类型时的列数提示。 |
用途
通用网格轨道描述函数,返回 dict;与 flexible、fixed、adaptive 功能等价,适合动态生成列/行描述。
已复制
import appui
cols = [appui.grid_item('flexible', minimum=60), appui.grid_item('fixed', minimum=44)]
print(cols)