{ "cells": [ { "cell_type": "code", "execution_count": null, "metadata": { "tags": [ "parameters" ] }, "outputs": [], "source": [ "flex_author = \"built using jupyter-flex\"\n", "flex_orientation = \"rows\"\n", "flex_source_link = \"https://github.com/danielfrg/jupyter-flex/blob/master/examples/widgets/ipysheet.ipynb\"\n", "flex_include_source = True" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import ipysheet" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Col 1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Sheet 1" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "tags": [ "body" ] }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "6c429420fbac40969501665c30b61fb9", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Sheet(cells=(Cell(column_end=0, column_start=0, row_end=0, row_start=0, type='text', value='Hello'), Cell(colu…" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sheet = ipysheet.sheet(rows=3, columns=4)\n", "cell1 = ipysheet.cell(0, 0, 'Hello')\n", "cell2 = ipysheet.cell(2, 0, 'World')\n", "cell_value = ipysheet.cell(2,2, 42.)\n", "sheet" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Events" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "tags": [ "body" ] }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "74ca90aa5ebf4086983b3833df4f0a99", "version_major": 2, "version_minor": 0 }, "text/plain": [ "VBox(children=(Sheet(cells=(Cell(column_end=1, column_start=1, row_end=0, row_start=0, type='numeric', value=1…" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import ipywidgets as widgets\n", "sheet = ipysheet.sheet(rows=3, columns=2, column_headers=False, row_headers=False)\n", "cell_a = ipysheet.cell(0, 1, 1, label_left='a')\n", "cell_b = ipysheet.cell(1, 1, 2, label_left='b')\n", "cell_sum = ipysheet.cell(2, 1, 3, label_left='sum', read_only=True)\n", "\n", "# create a slider linked to cell a\n", "slider = widgets.FloatSlider(min=-10, max=10, description='a')\n", "widgets.jslink((cell_a, 'value'), (slider, 'value'))\n", "\n", "# changes in a or b should trigger this function\n", "def calculate(change):\n", " cell_sum.value = cell_a.value + cell_b.value\n", "\n", "cell_a.observe(calculate, 'value')\n", "cell_b.observe(calculate, 'value')\n", "\n", "widgets.VBox([sheet, slider])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Col 2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Cell ranges" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "tags": [ "body" ] }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "111ff56a1a8b4712aa883e054940df86", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Sheet(cells=(Cell(column_end=3, column_start=0, row_end=0, row_start=0, squeeze_column=False, style={'backgrou…" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sheet = ipysheet.sheet(rows=5, columns=4)\n", "row = ipysheet.row(0, [0, 1, 2, 3], background_color=\"red\")\n", "column = ipysheet.column(1, [\"a\", \"b\", \"c\", \"d\"], row_start=1, background_color=\"green\")\n", "cells = ipysheet.cell_range([[\"hi\", \"ola\"], [\"ciao\", \"bonjour\"], [\"hallo\", \"guten tag\"]],\n", " row_start=1, column_start=2, background_color=\"yellow\")\n", "sheet\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Calculations" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "tags": [ "body" ] }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "50633c778a50406a97e294a033d2e3d1", "version_major": 2, "version_minor": 0 }, "text/plain": [ "VBox(children=(Sheet(cells=(Cell(column_end=1, column_start=1, row_end=0, row_start=0, type='numeric', value=1…" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import ipywidgets as widgets\n", "sheet_2 = ipysheet.sheet(rows=3, columns=2, column_headers=False, row_headers=False)\n", "cell_a_2 = ipysheet.cell(0, 1, 1, label_left='a')\n", "cell_b_2 = ipysheet.cell(1, 1, 2, label_left='b')\n", "cell_sum_2 = ipysheet.cell(2, 1, 3, label_left='sum', read_only=True)\n", "\n", "# create a slider linked to cell a\n", "slider_2 = widgets.FloatSlider(min=-10, max=10, description='a')\n", "widgets.jslink((cell_a_2, 'value'), (slider_2, 'value'))\n", "\n", "@ipysheet.calculation(inputs=[cell_a_2, cell_b_2], output=cell_sum_2)\n", "def calculate(a, b):\n", " return a * b\n", "\n", "widgets.VBox([sheet_2, slider_2])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Renderers" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "tags": [ "source" ] }, "outputs": [], "source": [ "jscode_renderer_negative = \"\"\"function (value) {\n", " return {\n", " backgroundColor: value < 0 ? 'red' : 'green'\n", " };\n", "}\n", "\"\"\"\n", "ipysheet.renderer(code=jscode_renderer_negative, name='negative');" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "tags": [ "body" ] }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "f7a50738ca6d41ee9c065ce8a8164f37", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Sheet(cells=(Cell(column_end=3, column_start=0, renderer='negative', row_end=2, row_start=0, squeeze_column=Fa…" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import random\n", "s = ipysheet.sheet(rows=3, columns=4)\n", "data = [[random.randint(-10, 10) for j in range(4)] for j in range(3)]\n", "ipysheet.cell_range(data, renderer='negative')\n", "s" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.8" } }, "nbformat": 4, "nbformat_minor": 4 }