如何在jupyter笔记本的选项卡式布局中延迟输出? [英] How to lazify output in Tabbed Layout in jupyter notebook?
问题描述
我想使用ipywidgets
在jupyter笔记本中创建选项卡式布局.我只想单击特定选项卡的输出.换句话说,将输出延迟化.
I want to create a tabbed layout in jupyter notebook using ipywidgets
. I want to process the output of a particular tab only when it is clicked. In other words, lazify the output.
from ipywidgets import widgets
out1 = widgets.Output()
with out1:
get_output_1()
out2 = widgets.Output()
with out2:
get_output_2()
out = widgets.Tab([out1, out2])
out.set_title(0, 'out1')
out.set_title(1, 'out2')
display(out)
我希望仅在单击相应的选项卡时才调用功能get_output_1()
和get_output_2()
.
I want the functions get_output_1()
and get_output_2()
to be called only when the corresponding tab is clicked.
请帮帮我.
推荐答案
您可以使用observe
函数检测选择了哪个选项卡,然后从词典中选择正确的Output小部件,运行您的函数,然后显示返回值.
You can use the observe
function to detect which tab is being selected, and then choose the correct Output widget from a dictionary, run your function and then display the return value.
您可能希望长时间运行的函数具有@lru_cache
装饰器,以便在选项卡之间来回滑动时,等待时间较短.
You might want your long running function to have the @lru_cache
decorator so that as you flick backwards and forward between tabs you have a shorter wait time.
from IPython.display import clear_output, display
import time
import ipywidgets as widgets
from functools import lru_cache
# set up a dictionary of Output widgets
outputs = {i: widgets.Output() for i in range(0,3)}
# add the Output widgets as tab childen
tab = widgets.Tab()
tab.children = list(outputs.values())
for i, title in outputs.items():
tab.set_title(i, 'Tab '+str(i))
def print_on_select(widget):
# get the correct Output widget based on the index of the chosen tab
tab_idx = widget['new']
output_widget = outputs[tab_idx]
with output_widget:
clear_output()
print('running long function')
value = long_running_function(tab_idx)
clear_output()
print(value)
@lru_cache(32)
def long_running_function(tab_idx):
time.sleep(2)
return 'this is tab number ' + str(tab_idx)
tab.observe(print_on_select, names='selected_index')
display(tab)
这篇关于如何在jupyter笔记本的选项卡式布局中延迟输出?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!