Python 3.x iPython小部件:与html结果交互()

Python 3.x iPython小部件:与html结果交互(),python-3.x,ipython-notebook,jupyter-notebook,ipywidgets,Python 3.x,Ipython Notebook,Jupyter Notebook,Ipywidgets,我最近发现了iPython小部件,我想使用它们为用户提供更多的交互。特别是,我有一个函数,根据用户的选择返回一个HTML表 当我使用小部件并进行交互时,HTML表不会得到更新。相反,每次用户做出选择时,它都会在下面打印一个新表,这并没有多大帮助,因为这些表可能相当大 另一方面,如果我只返回HTML表的字符串,它会被更新,但对可视化也没有多大帮助 是否有任何解决方案可以在用户每次进行选择时更新HTML表而不是打印 EDIT:Nevermind,我发现了如何将html输出链接到另一个小部件 下面是一

我最近发现了iPython小部件,我想使用它们为用户提供更多的交互。特别是,我有一个函数,根据用户的选择返回一个HTML表

当我使用小部件并进行交互时,HTML表不会得到更新。相反,每次用户做出选择时,它都会在下面打印一个新表,这并没有多大帮助,因为这些表可能相当大

另一方面,如果我只返回HTML表的字符串,它会被更新,但对可视化也没有多大帮助

是否有任何解决方案可以在用户每次进行选择时更新HTML表而不是打印

EDIT:Nevermind,我发现了如何将html输出链接到另一个小部件

下面是一个工作代码示例,带有一个简单的表:

from IPython.display import display,HTML
#ipywidgets imports
from __future__ import print_function
from ipywidgets import *
import ipywidgets as widgets

#EDIT
#added an html widget for output
w3 = widgets.HTML(value="")

def my_function(a, b):
    html_table = '<table><thead>'
    for col in a:
        html_table += '<th>'+col+'</th>'
    html_table += '</thead><tbody>'
    for row in b:
        html_table += '<tr>'
        for col in a:
            html_table += '<td>'+row+'</td>'
        html_table += '</tr>'
    html_table += '</tbody></table>'

    #EDIT
    w3.value = html_table
    #return HTML(html_table)
    #return html_table

widget1 = widgets.SelectMultiple(
    description="columns:",
    options=['A', 'B', 'C', 'D', 'E', 'F', 'G']
)

widget2 = widgets.SelectMultiple(
    description="rows:",
    options=['A', 'B', 'C', 'D', 'E', 'F', 'G']
)

#EDIT
interact(my_function, a=widget1, b=widget2)
display(w3)
从IPython.display导入显示,HTML
#ipywidgets导入
来自未来导入打印功能
从ipywidgets导入*
将IPyWidget作为小部件导入
#编辑
#为输出添加了一个html小部件
w3=widgets.HTML(value=”“)
def my_功能(a、b):
html_表=“”
对于a中的col:
html_表+=''+col+''
html_表+=“”
对于b中的行:
html_表+=“”
对于a中的col:
html_表+=''+行+''
html_表+=“”
html_表+=“”
#编辑
w3.value=html\u表
#返回HTML(HTML_表)
#返回html\u表
widget1=widgets.SelectMultiple(
description=“columns:”,
选项=['A','B','C','D','E','F','G']
)
widget2=widgets.SelectMultiple(
description=“行:”,
选项=['A','B','C','D','E','F','G']
)
#编辑
交互(my_函数,a=widget1,b=widget2)
显示器(w3)