在 Python 中使用 ipywidget 时水平滚动条不起作用
Horizontal scroll bar does not working when using ipywidget in Python
我正在Jupyter实验室学习ipywidget。我想要的是在数据框中搜索关键字,然后显示结果。因此,结果是一个可能很大的数据框。所以,我需要垂直条和水平条来显示所有数据。这是示例代码:
import pandas as pd
import numpy as np
import ipywidgets as widgets
from IPython.display import display
from ipywidgets import Button, Layout
import warnings
warnings.filterwarnings('ignore')
pd.set_option("display.max_rows", None)
pd.set_option('display.max_columns',None)
pd.set_option('max_colwidth', 4000)
a=pd.DataFrame({'a1':['aaaaaaaaaaaaaaaaaaaa','bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb','vvvvvvvvvvvvvvvvvvvvvvvvvvv','abc'],
'a2':['bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb','eeeeeeeeeeeeeeeeeeeeeeeeeeee','sssssssssssssssssssssssssssss','abc'],
'a3':['qqqqqqqqqqqqqqqqqqqqqqq','aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa','rrrrrrrrrrrrrrrrrrrrrrrrr','abc']})
keyword=widgets.Text(
value='abc',
placeholder='Type something',
description='keyword:',
disabled=False
)
#display(keyword)
button = widgets.Button(description="search")
#display(button)
input_widgets = widgets.HBox([keyword,button])
display(input_widgets)
#,width='500px', overflow_x='auto'
#output = widgets.Output(layout=Layout(height='400px', overflow_y='auto',width='1600px', overflow_x='auto'))
output = widgets.Output(layout=Layout(height='100px', width='500px',overflow='scroll'))
@output.capture()
def on_button_clicked(btn):
output.clear_output()
display(a)
button.on_click(on_button_clicked)
display(output)
从图中可以看出,竖条有效,但横条不起作用。只有当你滚动到数据框的末尾时,你才能看到水平条,这不是我们通常做的。希望单杠能显示在区域的最后。
一个简单的解决方法是将文本区域小部件(无布局)放入具有以下布局的 HBox 小部件
box_layout = widgets.Layout(display='flex',
flex_flow='row',
border='1px solid black',
width='140px',
height='400px')
output.layout.overflow = 'visible'
我正在Jupyter实验室学习ipywidget。我想要的是在数据框中搜索关键字,然后显示结果。因此,结果是一个可能很大的数据框。所以,我需要垂直条和水平条来显示所有数据。这是示例代码:
import pandas as pd
import numpy as np
import ipywidgets as widgets
from IPython.display import display
from ipywidgets import Button, Layout
import warnings
warnings.filterwarnings('ignore')
pd.set_option("display.max_rows", None)
pd.set_option('display.max_columns',None)
pd.set_option('max_colwidth', 4000)
a=pd.DataFrame({'a1':['aaaaaaaaaaaaaaaaaaaa','bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb','vvvvvvvvvvvvvvvvvvvvvvvvvvv','abc'],
'a2':['bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb','eeeeeeeeeeeeeeeeeeeeeeeeeeee','sssssssssssssssssssssssssssss','abc'],
'a3':['qqqqqqqqqqqqqqqqqqqqqqq','aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa','rrrrrrrrrrrrrrrrrrrrrrrrr','abc']})
keyword=widgets.Text(
value='abc',
placeholder='Type something',
description='keyword:',
disabled=False
)
#display(keyword)
button = widgets.Button(description="search")
#display(button)
input_widgets = widgets.HBox([keyword,button])
display(input_widgets)
#,width='500px', overflow_x='auto'
#output = widgets.Output(layout=Layout(height='400px', overflow_y='auto',width='1600px', overflow_x='auto'))
output = widgets.Output(layout=Layout(height='100px', width='500px',overflow='scroll'))
@output.capture()
def on_button_clicked(btn):
output.clear_output()
display(a)
button.on_click(on_button_clicked)
display(output)
从图中可以看出,竖条有效,但横条不起作用。只有当你滚动到数据框的末尾时,你才能看到水平条,这不是我们通常做的。希望单杠能显示在区域的最后。
一个简单的解决方法是将文本区域小部件(无布局)放入具有以下布局的 HBox 小部件
box_layout = widgets.Layout(display='flex',
flex_flow='row',
border='1px solid black',
width='140px',
height='400px')
output.layout.overflow = 'visible'