我想显示一个pandas dataframe,其中在每一行的开头都有一个Checkboxipywidget)来知道用户正在选择哪一行。

我使用以下代码对Button进行了首次试用

import pandas as pd
from IPython.display import display, HTML
from ipywidgets import Button, HBox, VBox,widgets
import ipywidgets
from ipyleaflet import Map

mS2 = Map(center=(40.4, -3.7), zoom=6)

offlineS2 = ['true', 'false']
nameS2 = ['a','b']

df = pd.DataFrame({'Name': nameS2,'Offile': offlineS2})

# ideally I would need Checkbox not Button
button0 = widgets.Button(description='Click to display')
button1 = widgets.Button()
button2 = widgets.Button(description='Select')
dfW = ipywidgets.HTML(df.style.set_table_attributes('class="table"').render())

testup = HBox([VBox([button0,button1,button2]),dfW])
display(VBox([testup,mS2]))


输出看起来像这样:
python - 在 Pandas 数据框中插入复选框-LMLPHP

但是,当我用widgets.Button更改代码widgets.Checkbox时,尽管显示了它,但复选框和数据框之间的距离太大。为什么会发生这种情况?

python - 在 Pandas 数据框中插入复选框-LMLPHP

编辑

使用

`button1 = widgets.Button(indent=False)`


python - 在 Pandas 数据框中插入复选框-LMLPHP

最佳答案

默认情况下:indent设置为True。将其更改为False和Voilà。

尝试这个:

button0 = widgets.Checkbox(
    description="Click to display",
    value=True,
    indent=False
)
button1 = widgets.Checkbox(
    description="",
    value=True,
    indent=False
)
button2 = widgets.Checkbox(
    description="Select",
    value=True,
    indent=False
)


编辑:

尝试为您的HBox手动设置边距和填充。

verticalItems = VBox([button0,button1,button2], layout=Layout(margin='0 0 0 0', padding='0 0 0 0'))
fullLayout = HBox([verticalItems, dfW], layout=Layout(margin='0 0 0 0', padding='0 0 0 0'))

display(VBox([fullLayout ,mS2]))

10-07 21:39