Skip to content

Errors with "controls" argument of @interact #579

@Keanel-19

Description

@Keanel-19

There is multiple errors with the controls argument of @interact.

To use it, the decorated function must have a **kargs argument so it can pass the controls.

@interact(controls=[("b",Button("a"))])
def f(**kargs):
    pass

This code throw an error because it try to pass the proxy to kargs, because it's the first argument of f and doesn't have a default value. But in this case f doesn't take any positional argument :

TypeError: f() takes 0 positional arguments but 1 was given

I can resolve it by adding any argument before **kargs (any control or an argument for the proxy):

@interact(controls=[("b",Button("a"))])
def f(proxy, **kargs):
    pass

In this case, it doesn't throw any error but sagecell add an input control with label kargs
image

For now I just do this:

@interact(controls=[("b",Button("AA"))])
def f(proxy,**kargs):
    if getattr(proxy,"kargs"):
        del proxy.kargs

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions