Py.Cafe

awesome.panel.org/

panel-copy-paste

A refererence app for the panel-copy-paste Python package

DocsPricing
  • app.py
  • requirements.txt
app.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
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()