Complicated Settings of Dialogs
GUIs built by @magicgui
can be customized later.
from magicgui import magicgui
@magicgui
def func(x: int, y: int):
return x + y
# connect signals
@func.x.changed.connect
def _(val):
func.y.value = val
# add widgets
func.append(...)
Of course, you can do this customization by calling get_function_gui
inside
__post_init__
.
from magicclass import magicclass, get_function_gui
@magicclass
class A:
def __post_init__(self):
gui = get_function_gui(self.func)
gui.x.changed.connect(print) # setup the dialog for `func`
def func(self, x: int):
"""Do something"""
But the better solution is to use @setup_function_gui
decorator.
from magicclass import magicclass, setup_function_gui
@magicclass
class A:
def func(self, x: int):
print(x)
@setup_function_gui(func)
def _setup_func(self, mgui):
mgui.x.changed.connect(print)
This can be done outside the class.
from magicclass import magicclass, setup_function_gui
@magicclass
class A:
def func(self, x: int):
print(x)
@setup_function_gui(A.func)
def _setup_func(self, mgui):
mgui.x.changed.connect(print)