объединение двух ipysheets в блокнот jupyter для визуализации с помощью вуаля - PullRequest
1 голос
/ 16 февраля 2020

Я хотел бы использовать ipysheets и ipywidgets для создания пользовательского интерфейса, аналогичного веб-, используя voila в блокноте jupyter.

Это очень мощный инструмент для очень быстрого создания пользовательских интерфейсов для быстрого взаимодействия с пользователем без необходимости прибегнуть к веб-страницам, то есть к серверам, django, веб-фреймам и т. п.

Я пытаюсь связать ячейки двух ipysheets, один для входных данных и другой для выходных данных. Содержимое выходной таблицы данных должно обновляться на лету каждый раз, когда происходит изменение входных данных (в данном случае, например, путем установки флажков).

from ipysheet import *
import ipywidgets as widgets
import ipysheet
import pandas as pd

# example dataframe with check boxes, (including booleans)
DF_input = pd.DataFrame(data={'a':[False,False,False],'b':[False,False,False]})
sheet_input = ipysheet.sheet(from_dataframe(DF_input))

# Output dataframe has as many columns as input dataframe but only one row
DF_m = pd.DataFrame(data={'m1':['non'],'m2':['non']})               
sheet_m = ipysheet.sheet(from_dataframe(DF_m))

# I try here to pass the cells of the current ipysheet to cell_m1 and cell_m2
cell_m1 = ipysheet.cell(0, 1)
cell_m2 = ipysheet.cell(0, 2)

I would like that this function runs every time there is a change in the Input sheet.
def calculate(change):
    mydf = to_dataframe(sheet_input)
    cell_m1.value = mydf.loc[:,'a'].any()
    cell_m2.value = mydf.loc[:,'b'].any()

# I want that the cells of the second sheet observe the changes. 
# I want to call the function calculate everytime there is a change
cell_m1.observe(calculate, 'value')
cell_m2.observe(calculate, 'value')

widgets.VBox([sheet_input,sheet_m])

Это результат:

enter image description here

При попытке установить флажки происходят странные вещи:

enter image description here

В конечном итоге я хочу связать ячейки второго sheet_m со значениями первого sheet_input. Функция calc должна получить всю таблицу sheet_input, выполнить некоторые вычисления и заполнить значения в sheet_m.

Что я сделал: я много раз читал документацию ipysheets и, прежде всего, функцию наблюдения. https://readthedocs.org/projects/ipysheet/downloads/pdf/latest/

Немного помощи было бы неплохо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...