Skip to content

State class

Accessor to the bound variables from callbacks.

State is used when you need to access the value of variables bound to visual elements (see Binding).
Because each browser connected to the application server may represent and modify any variable at any moment as the result of user interaction, each connection holds its own set of variables along with their values. We call the set of these the application variables the application state, as seen by a given client.

Each callback (see Callbacks) receives a specific instance of the State class, where you can find all the variables bound to visual elements in your application.

Note that State also is a Python Context Manager: In situations where you have several variables to update, it is more clear and more efficient to assign the variable values in a with construct:

def my_callback(state, ...):
  ...
  with state as s:
    s.var1 = value1
    s.var2 = value2
  ...

You cannot set a variable in the context of a lambda function because Python prevents any use of the assignment operator.
You can, however, use the assign() method on the state that the lambda function receives, so you can work around this limitation:

Here is how you could define a button that changes the value of a variable directly in a page expressed using Markdown:

   <|Set variable|button|on_action={lambda s: s.assign("var_name", new_value)}|>
This would be strictly similar to the Markdown line:
   <|Set variable|button|on_action=change_variable|>
with the Python code:
def change_variable(state):
    state.var_name = new_value

Methods

assign()

assign(name: str, value: t.Any) -> t.Any

Assign a value to a state variable.

This should be used only from within a lambda function used as a callback in a visual element.

Parameters:

Name Type Description Default
name str

The variable name to assign to.

required
value Any

The new variable value.

required

Returns:

Name Type Description
Any Any

The previous value of the variable.

broadcast()

broadcast(name: str, value: t.Any)

Update a variable on all clients.

All connected clients will receive an update of the variable called name with the provided value, even if it is not shared.

Parameters:

Name Type Description Default
name str

The variable name to update.

required
value Any

The new variable value.

required

get_gui()

get_gui() -> Gui

Return the Gui instance for this state object.

Returns:

Name Type Description
Gui Gui

The Gui instance for this state object.

refresh()

refresh(name: str)

Refresh a state variable.

This allows to re-sync the user interface with a variable value.

Parameters:

Name Type Description Default
name str

The variable name to refresh.

required

set_favicon()

set_favicon(favicon_path: t.Union[str, Path])

Change the favicon for the client of this state.

This function dynamically changes the favicon (the icon associated with the application's pages) of Taipy GUI pages for the specific client of this state.

Note that the favicon parameter to run() can also be used to change the favicon when the application starts.

Parameters:

Name Type Description Default
favicon_path Union[str, Path]

The path to the image file to use.
This can be expressed as a path name or a URL (relative or not).

required