我想显示一个pandas dataframe
,其中在每一行的开头都有一个Checkbox
(ipywidget
)来知道用户正在选择哪一行。
我使用以下代码对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]))
输出看起来像这样:
但是,当我用
widgets.Button
更改代码widgets.Checkbox
时,尽管显示了它,但复选框和数据框之间的距离太大。为什么会发生这种情况?编辑
使用
`button1 = widgets.Button(indent=False)`
最佳答案
默认情况下: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]))