显示 ipywidget 输出小部件的最后输出

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

我正在使用 ipywidget 的“输出”小部件。 当文本发送到它时,滚动条会出现,因为数量超过了可以显示的数量。 此时,仅显示文本的第一行。 相反,当添加新文本时,我希望它自动滚动,以便始终显示打印的最后一行。

当前行为: enter image description here 如何使最后一行输出在打印时显示?

jupyter-lab ipywidgets
2个回答
2
投票

目前对于scroll_to_bottom问题还没有通用的解决方案。请参阅:https://github.com/jupyter-widgets/ipywidgets/issues/1815

在讨论中似乎有一个Linux特定的解决方案,我无法验证。

该问题位于ipywidgets的里程碑列表中https://github.com/jupyter-widgets/ipywidgets/milestone/2


0
投票

尝试单击行并看到滚动自动发生,没有任何闪烁。

from ipydatagrid import DataGrid
import pandas as pd
from IPython.display import display, HTML
import ipywidgets as wid

data = {
    'ID': [1, 2, 3, 4, 5],
    'Name': ['Alice', 'Bob', 'Charlie', 'Diana', 'Eve'],
    'Age': [25, 30, 35, 40, 45]
}
df = pd.DataFrame(data)

datagrid = DataGrid(
    df,
    selection_mode='row',
    editable=False,
)

out = wid.Output()
out.add_class("my-output")

app = wid.HBox([
    datagrid,
    out,
])
display(app)

display(HTML("""
<style>
.my-output {
    min-width: 40%;
    max-height: 500px;
    border: 1px solid black;
    border-radius: 10px;
    overflow: scroll;
}
</style>
<script>
var outputDiv = document.querySelector(".my-output")

var observer = new MutationObserver(() => {
    outputDiv.scrollTop = outputDiv.scrollHeight
})

observer.observe(outputDiv, {childList: true, characterData: true, subtree: true})
</script>
"""))

def on_selection_change(change):
    out.append_stdout(", ".join([str(x) for x in datagrid.selected_cell_values]))
    out.append_stdout("\n")

datagrid.observe(on_selection_change, names='selections')
© www.soinside.com 2019 - 2024. All rights reserved.