Вот возможное решение (но подождем, чтобы увидеть, есть ли лучшее).
Напишите функцию-конвертер, которая преобразует div, который группирует относящиеся к объекту html-элементы, затем используйте его вфункция обратного вызова.Вот так:
from dataclasses import dataclass
@dataclass
class TaggedCoord:
x: float
y: float
tag: str
def obj_for_div(d):
return TaggedCoord(*[c.value for c in d.children])
Тогда, если у вас есть, в вашем макете, что-то вроде:
import dash_core_components as dcc
import dash_html_components as html
d = html.Div(children=[dcc.Input(id='x', value=0, type='number'),
dcc.Input(id='y', value=0, type='number'),
dcc.Input(id='tag', value='', type='text')],
id='tagged_coord')
@callback(..., [...], [State(tag_coord_id)])
def store_tagged_coordinate(..., tag_coord):
tag_coord = obj_for_div(tag_coord)
...
Смотрите, что
>>> obj_for_div(d)
TaggedCoord(x=0, y=0, tag='')