如何在jupyter笔记本中制作带有可点击单元格的表格?

问题描述 投票:0回答:3

我下面有一个表格和一个绘图,我需要在单击表格单元格时更新绘图。

ipywidgets
库没有专用的表格小部件。

qgrid
没有针对单元格选择的回调,仅针对行选择(我怀疑我可以破解它以对单元格点击做出反应,但我想所需的工作相当于使原始 html 表格可点击)。

pivottablejs
很酷,但这对我的任务来说有点过分了。

bokeh
DataTable 似乎根本没有回调。

python jupyter-notebook bokeh ipywidgets qgrid
3个回答
1
投票

您通常可以使用 jp_proxy_widgets 将 Python 回调附加到 Javascript 对象,这几乎与仅使用 Javascript 的正常方式相同。

例如,我在这里创建一个“vanilla”表并将点击回调附加到 表格元素:

您还可以使用您最喜欢的 Javascript 库执行类似的操作(有一些注意事项 - 请参阅文档)。请在这里查看 jp_proxy_widgets:

https://github.com/AaronWatters/jp_proxy_widget


0
投票

您现在可以使用面板的新制表器

轻松完成此操作

示例:

import pandas as pd
import panel as pn
import numpy as np
pn.extension('tabulator')

sel_df = pd.DataFrame(np.random.randn(3, 5), columns=list('ABCDE'))

select_table = pn.widgets.Tabulator(sel_df, selection=[0, 2])

def click(event):
    print(f'Clicked cell in {event.column!r} column, row {event.row!r} with value {event.value!r}')

select_table.on_click(click) 

select_table


0
投票

Streamlit提供可编辑数据框

df = pd.DataFrame(
    [
        {"command": "st.selectbox", "rating": 4, "is_widget": True},
        {"command": "st.balloons", "rating": 5, "is_widget": False},
        {"command": "st.time_input", "rating": 3, "is_widget": True},
    ]
)

df = load_data()
edited_df = st.data_editor(df) # 👈 An editable dataframe

favorite_command = edited_df.loc[edited_df["rating"].idxmax()]["command"]
st.markdown(f"Your favorite command is **{favorite_command}** 🎈")

(示例取自他们的网站)

© www.soinside.com 2019 - 2024. All rights reserved.