在Jupyter Lab中将输出打印到日志窗口而不是单元格

5

我最近从Jupyter Dashboard切换到了Jupyter Lab,遇到了一些小部件的问题。

我的笔记本包含按钮,当点击时,需要在代码单元格下方的输出单元格中打印文本。它们在Jupyter Dashboard中运行得很好。但是在Jupyter Lab中,相同的文本会被发送到日志窗口。有什么办法可以解决这个问题吗?

注意:当print()函数不是从一个按钮调用时,在Jupyter Dashboard和Jupyter Lab中都可以在代码单元格下方显示文本。

enter image description here

1个回答

0
由于按钮点击是无状态的,它们通过自定义消息从前端传输到后端。使用 on_click 方法,下面显示了一个在被点击时打印消息的按钮。为了捕获打印(或任何其他类型的输出)并确保其显示,一定要将其发送到 Output 小部件(或将要显示的信息放入 HTML 小部件中)。
button = widgets.Button(description="Click Me!")
output = widgets.Output()

display(button, output)

def on_button_clicked(b):
    with output:
        print("Button clicked.")

button.on_click(on_button_clicked)

https://ipywidgets.readthedocs.io/en/stable/examples/Widget%20Events.html


继续遵循这个出色的建议,对于其他人来说,现在要注意到有很多与小部件相关的过时代码,现在是ipwidgets。最好查看各种地方提供的文档和现代示例,例如Jupyter Discourse Forum。(类似的问题和答案集在此处。)随着现在正在使用的经典笔记本将被更像JupyterLab的底层机制所取代,事情将变得更加严格。 - Wayne

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接