Because it took me a while to figure out:
import panel as pn
import pandas as pd
from pscript import py2js
pn.extension('tabulator')
def transpose_dict_of_arrays(d):
out = {}
for i in range(len(list(d.values())[0])):
out[list(d.values())[0][i]] = list(d.values())[1][i]
return out
test = {"index":["language","name"],"inputs":["Javascript","You"]}
df = pd.DataFrame(
{'inputs':transpose_dict_of_arrays(test)}
)
big = pn.widgets.Tabulator(df)
markdown = pn.pane.Markdown("")
button = pn.widgets.Button(name = 'Get Data')
x = button.jscallback(clicks = py2js(transpose_dict_of_arrays) + """
var inputs = transpose_dict_of_arrays(big.source.data);
markdown.text = 'Hello, ' + inputs['name']
""", args={'big' : big, 'markdown': markdown})
x = pn.Column(big, button, markdown)
x.save('static.html')