Py.Cafe

nicolalandro/

anywidget-interactive-counter

AnyWidget Interactive Counter

DocsPricing
  • app.py
  • requirements.txt
  • widget.js
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
import anywidget
import traitlets
from pathlib import Path

class TestWidget(anywidget.AnyWidget):
    _esm = """  
    function render({ model, el }) {
        let count = () => model.get("value");
        let btn = document.createElement("button");
        btn.innerHTML = `count is ${count()}`;
        btn.addEventListener("click", () => {
            model.set("value", count() + 1);
            model.save_changes();
        });
        model.on("change:value", () => {
            btn.innerHTML = `count is ${count()}`;
        });
        el.appendChild(btn);
    }
    export default { render };
    """
    value = traitlets.Int(0).tag(sync=True)

page = TestWidget(value=10)