import panel as pn
from panel_copy_paste import CopyButton, PasteToDataFrameButton
import pandas as pd
ACCENT = "#ff4a4a"
pn.extension("tabulator")
df = pd.DataFrame({"A": [1.2, 2.2, 3.3], "B": [4.4, 5.5, 6.6]})
# Copy From Widgets
from_table = pn.widgets.Tabulator(df, width=300, height=150)
copy_button = CopyButton(value=from_table)
decimal_separator = pn.widgets.RadioButtonGroup.from_param(
copy_button.param.decimal_separator,
options=[".", ","],
button_type="primary",
button_style="outline",
)
# Paste to Widgets
to_table = pn.widgets.Tabulator(pd.DataFrame(), width=300, height=150)
paste_button = PasteToDataFrameButton(
target=to_table, decimal_separator=copy_button.param.decimal_separator
)
to_editor = pn.pane.Str(paste_button.param.data)
# Layout
layout = pn.Column(
pn.Row(
pn.Column("**Copy Here**", copy_button, from_table),
pn.Column("**Paste here**", paste_button, pn.Row(to_table, to_editor)),
)
)
pn.template.FastListTemplate(
title="panel-copy-paste",
sidebar=["## Settings\n\nDecimal Separator", decimal_separator],
main=[layout, "**$ pip install panel-copy-paste**"],
main_layout=None,
accent=ACCENT,
).servable()