CustomJS.from_py_func(コールバック)がうまくいきません。 グラフとウィジェットを表示できますが、コールバック関数をうまく処理できません。コードのinterractiveウィジェットを動作させない
---サンプルコード
from bokeh.layouts import column
from bokeh.models import CustomJS, ColumnDataSource
from bokeh.plotting import Figure, output_file, show
from bokeh.models.widgets import Button
reset_output()
#output_file("button.html",mode="inline")
output_notebook(resources=INLINE)
x = [x for x in range(0, 10)]
y = x
source = ColumnDataSource(data=dict(x=x, y=y))
def line_visible(arg):
if arg == 1: ll.visible = True
else: ll.visible = False
plot = Figure(plot_width=200, plot_height=200)
ll = plot.line('x', 'y', source=source, line_width=3, line_alpha=0.6)
line_visible(1) # visible = True: work well! line_visible(0) is OK, too.
def callback(source=source, window=None):
data = source.data
act = cb_obj.get('active') # 0:CHG,1:DSP,2:NOT
if 0 in act: # CHG work well
x, y = data['x'], data['y']
for i in range(len(x)):
x[i] = x[i]*1.1
y[i] = y[i]*2.0
if 1 in act: line_visible(1) # DSP: ?
if 2 in act: line_visible(0) # NOT:visible=False: don't work.
source.change.emit()
toggle1 = CheckboxButtonGroup(labels=["CHG","DSP","NOT"],
active=[], # all are not active: if active=[0,1,2], all are active
callback=CustomJS.from_py_func(callback)) #<= need Flexx(0.4.1)
layout = column(toggle1,plot)
show(layout)
---終わり---
私は新しいバージョンを得ました。うまく
あなたはよりもはるかに詳細にあなたの問題を説明する必要があるとしている「うまく機能しません。」 – kindall
この問題は、コールバック関数で目に見える原因を処理することではありません。 可視属性はコールバック関数の外部でうまく機能します。 これは "CustomJS.from_py_func()"のバグだと思っていました。 – SoccerKing
line_visible()は問題ありません。ウィジェットを使用すると、callback()が機能します。 CHGボタンでデータを変更することができます。ただし、NOTボタンを押すと表示される属性を変更できます。 – SoccerKing