跳转到内容

选项类型

Option 类提供用于定义带类型、持久化选项的工厂方法,这些选项会在工具和格式插件对话框中生成 UI 控件。

通用参数

所有选项工厂方法都接受以下参数:

参数类型说明
labelstr显示标签(第一个位置参数)
defaultvaries默认值
tooltipstr工具提示文本
enabled_whencallable返回 bool 的回调——控制可见性

Option.integer()

用于整数值的微调框。

count = Option.integer("Count", default=1, min=0, max=1000)
参数类型默认值说明
defaultint0默认值
minintNone最小值
maxintNone最大值

Option.real()

用于浮点值的双精度微调框。

scale = Option.real("Scale Factor", default=1.0, min=0.001, max=1e6, decimals=4)
参数类型默认值说明
defaultfloat0.0默认值
minfloatNone最小值
maxfloatNone最大值
decimalsint2显示的小数位数

Option.boolean()

用于 true/false 值的复选框。

flatten = Option.boolean("Flatten hierarchy", default=False)
参数类型默认值说明
defaultboolFalse默认值

Option.string()

单行文本字段。

name = Option.string("Output name", default="output")
参数类型默认值说明
defaultstr""默认值

Option.choice()

下拉选择器。

mode = Option.choice("Mode", choices=["Fast", "Precise", "Custom"], default="Fast")
参数类型默认值说明
choiceslist[str]required可用选项
defaultstrfirst choice默认选择

Option.path()

带浏览按钮的文件路径选择器。

output = Option.path("Output file", file_filter="CSV Files (*.csv)")
参数类型默认值说明
defaultstr""默认路径
file_filterstr""文件类型过滤字符串

Option.color()

颜色选择按钮。

fill = Option.color("Fill color", default="#FF0000")
参数类型默认值说明
defaultstr"#000000"默认颜色(十六进制)

Option.cell_choice()

由当前图纸中的所有单元名称填充的下拉框。

target = Option.cell_choice("Target cell")
参数类型默认值说明
defaultstr""默认单元名称

Option.table()

带类型列的可编辑网格。另请参阅面板拼版教程

entries = Option.table(
"My Table",
columns=[
TableColumn(key="name", label="Name", col_type="string"),
TableColumn(key="value", label="Value", col_type="real", decimals=3),
],
)
参数类型默认值说明
columnslist[TableColumn]required列定义
defaultlist[dict][]默认行

该值是一个 list[dict],其中每个字典将列键映射到值。

TableColumn

属性类型说明
keystr此列的字典键
labelstr列标题
col_typestrstringintegerrealchoicecell_choice
defaultAny新行的默认值
choiceslist[str]choice 列的选项
decimalsintreal 列的小数位数
min_valueint|float数值列的最小值
max_valueint|float数值列的最大值

条件可见性

使用 enabled_when 动态启用/禁用选项:

class MyTool(Tool):
mode = Option.choice("Mode", choices=["Simple", "Advanced"])
threshold = Option.real(
"Threshold",
default=0.5,
enabled_when=lambda self: self.mode == "Advanced",
)
iterations = Option.integer(
"Iterations",
default=10,
enabled_when=lambda self: self.mode == "Advanced",
)

mode 为 “Simple” 时,thresholditerations 字段会变灰。