我最近发现了 iPython 小部件,我想用它们为用户提供更多的交互。特别是,我有一个根据用户做出的选择返回 HTML 表的函数。
当我使用小部件并进行交互时,HTML 表没有得到更新。取而代之的是,每次用户进行选择时,它都会在下面打印一个新表格,并且它不是很有帮助,因为表格可能非常大。
另一方面,如果我只返回 HTML 表的字符串,它会被更新,但对可视化也没有太大帮助!
每次用户进行选择时,是否有任何解决方案可以更新而不是打印 HTML 表格?
编辑:没关系,我发现了如何将 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)