Registers a global parameter to be displayed in the control panel. Depending on the required data, possible parameter types include menus, sliders, checkboxes, checkentries, or checkgrids. The current value of the parameter can be retrieved with model.param()
.
This function also replaces the previous model.addGoodParam()
and model.addBreedParam()
methods. Use the per
argument instead to register per-good and per-breed parameters.
Parameters
name — str, required
A slug-type string to be used to refer back to the parameter in other functions.
title — str, required
The title of the parameter, to be displayed in the GUI.
type — str, required
What type of control to display. Possible values are
'menu'
,'check'
,'slider'
,'checkentry'
,'checkgrid'
, or'hidden'
.dflt — str|bool|num|list, required
The default value of the parameter. A menu should have a string here, a check a boolean, a slider a number, a checkentry a bool, int, or string, and a checkgrid a list of strings.
opts — dict|list, optional
Options for the parameter type.
- A slider should have a dict with keys 'low', 'high', and 'step', with numeric values, corresponding to the max and min values and the slider's increment. Alternatively
opts
can take a list of integers for a slider that slides over defined values. - A menu should have key-value pairs corresponding to menu items, with the key the value returned by the parameter, and the value the label displayed in the GUI.
- A checkgrid takes either a list of strings, or a dict with a name-label pair to describe each check. The label can also be entered as a two-item tuple, with the label as the first item and the tooltip text as the second.
- Checks, checkentries, or hidden parameters do not need an
opts
parameter.
Default value: {}
- A slider should have a dict with keys 'low', 'high', and 'step', with numeric values, corresponding to the max and min values and the slider's increment. Alternatively
runtime — bool, optional
Whether the parameter can be changed during the model's runtime. If set to
False
, the parameter will be disabled while the model is running.Default value: True
callback — func, optional
An optional function that will execute when the parameter changes. The function takes three arguments:
model
, the model object;var
, the name of the parameter (the first argument ofmodel.addParameter
); andval
, the new value of the parameter (with the exception ofCheckGrid
parameters, which pass a tuple('checkName', val)
to indicate which item was clicked).Default value: None
per — str, optional
None
for a global parameter,'breed'
for a per-breed parameter, or'good'
for a per-good parameter. Note thatper='breed'
requires theprim
argument to be specified if more than one primitive has been added. Note also thattype='checkgrid'
cannot be used as a per-item parameter.Default value: None
desc — str, optional
A long description to display as a tooltip.
Default value: None
getter — func(name, model), optional
A function to replace the parameter's own getter with open-ended code. The function can return
None
in order to pass to the default getter.Default value: None
setter — func(val, name, model), optional
A function to replace the parameter's own setter with open-ended code. The function can return something besides
None
in order to pass to the default setter.Default value: None
prim — str, optional
If
per='breed'
and more than one primitive has been added, this argument is required to specify which primitive's breeds to attach the parameters to.Default value: None
Return Value — Param
The newly created Param
object.
charwick
Mar 22, 2020 at 4:41This example adds three parameters to the model, a checkbox, a menu, and a slider, along with callbacks to push the updated values to the relevant place in the model. Note the different options passed in the
opts
parameter in the first two.This will display in the control panel like this:
charwick
Mar 23, 2020 at 1:06This example creates three per-breed parameters: a slider, a check, and a menu, each of which will take a separate value for each breed of the specified primitive. In this case there are two breeds, so we have two values for each parameter.
This will display in the control panel like this. Note the separate defaults on the slider parameter, as we passed a
dict
for thedflt
parameter rather than a number.charwick
Oct 20, 2020 at 21:28In this example, the user has an option of creating a square of a particular dimension or specifying an arbitrary height and width. In order to have the
'x'
and'y'
parameters available regardless of whethersquare==True
, we can use thesetter
andgetter
arguments to alias the'dimension'
parameter.charwick
Apr 12, 2021 at 20:26The
callback
parameter can be used to constrain two variables to each other. In this case, when the checkbox is checked, it locks the value of two sliders together.