Expression

class Expression(*args, **kwargs)

Subclasses: CClosureExpression, ClosureExpression, ConstantExpression, ObjectExpression, PropertyExpression

Constructors:

Expression(**properties)

Methods

class Expression
bind(target: Object, property: str, this_: Object | None = None) ExpressionWatch

Bind target’s property named property to self.

The value that self evaluates to is set via :func:`~gi.repository.GObject.GObject.Object.set` on target. This is repeated whenever self changes to ensure that the object’s property stays synchronized with self.

If self’s evaluation fails, target’s property is not updated. You can ensure that this doesn’t happen by using a fallback expression.

Note that this function takes ownership of self. If you want to keep it around, you should ref it beforehand.

Parameters:
  • target – the target object to bind to

  • property – name of the property on target to bind to

  • this – the this argument for the evaluation of self

evaluate(this_: Object | None, value: Any) bool

Evaluates the given expression and on success stores the result in value.

The GType of value will be the type given by get_value_type.

It is possible that expressions cannot be evaluated - for example when the expression references objects that have been destroyed or set to NULL. In that case value will remain empty and FALSE will be returned.

Parameters:
  • this – the this argument for the evaluation

  • value – an empty GValue

get_value_type() type

Gets the GType that this expression evaluates to.

This type is constant and will not change over the lifetime of this expression.

is_static() bool

Checks if the expression is static.

A static expression will never change its result when evaluate is called on it with the same arguments.

That means a call to watch is not necessary because it will never trigger a notify.

watch(this_: Object | None, notify: Callable[[...], None], *user_data: Any) ExpressionWatch

Watch the given expression for changes.

The notify function will be called whenever the evaluation of self may have changed.

GTK cannot guarantee that the evaluation did indeed change when the notify gets invoked, but it guarantees the opposite: When it did in fact change, the notify will be invoked.

Parameters:
  • this – the this argument to watch

  • notify – callback to invoke when the expression changes

  • user_data – user data to pass to the notify callback