1

最近、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)
4

0 に答える 0