JavaScriptを使用せずに、つまりbokehのドキュメントAdding A Custom Widgetに従わずにカスタムbokehウィジェットを作成したいと思います。以下の例は、PyQt4でカスタムウィジェットを作成する方法を示しています(私はこれをたくさん使っています)。そして、私が得るエラーメッセージと一緒にbokehで動作することを期待しています。JavaScriptを使用しないカスタムPython bokehウィジェットを追加
JavaScriptを使用せずにbokehでカスタムウィジェットを作成する他の方法はありますか?具体的には、スライダを1ステップずつインクリメント/デクリメントする左右のボタンがあるカスタムスライダを作成しようとしています。私はこのカスタムウィジェットを多くのアプリケーションで使いたいので、スライダーのon_changeメソッドにリンクされたon_changeメソッドを持つ独自のクラスとして定義します。 bokehには私が作りたい(JSなしで)他のカスタムウィジェットがあり、これが可能かどうかを知りたいと思います。
# this works as a base to develop custom PyQt4 widgets
from PyQt4 import QtGui
import sys
class NewWidget(QtGui.QWidget):
def __init__(self):
super().__init__()
app = QtGui.QApplication([])
widget = NewWidget()
widget.show()
sys.exit(app.exec_())
# this does not work as a base to develop custom bokeh widgets
# when run, a tab opens with the message
# Bokeh Error
# Model `NewWidget' does not exist. This could be due to a widget
# or a custom model not being registered before first usage.
from bokeh.plotting import show
from bokeh.layouts import widgetbox
from bokeh.models.widgets import Widget
class NewWidget(Widget):
def __init__(self):
super().__init__()
new = NewWidget()
show(widgetbox(new))
UPDATE:私が作成しようとしています特定のカスタムウィジェットは、各側のボタンとスライダーです(ラベル左側の「 - 」、「+」ラベル右側)によってスライダーの値を変更1ステップ。これは、Sliderの値を微調整して、マウスが目標値に正確に当たる必要がないようにするために使用されます。デフォルトのSliderオブジェクトとButtonオブジェクトをリンクしてこのカスタムウィジェットを作成し、ブラウザでレンダリングしますが、コールバック機能が動作していません(特にSliderのon_changeメソッド)。
ボケとJSで実装するのは簡単、このカスタム・ウィジェットですか? JSの中で深く潜ることなくヒントを提供するオンラインリファレンスがありますか?
':ここ
はスライダーを更新するためにボタンを
CustomJS
コールバックを使用する完全な例です。これはサーバーアプリケーションでは動作しないと言っていますか?または、これはサーバーアプリケーションのコンテキストではありませんか?いずれにしても、これはもっと一般的にJSと '.js_on_change'コールバック:http://bokeh.pydata.org/en/latest/docs/user_guide/interaction/callbacksの1行か2行で可能になるはずです。html#customjs-for-generic-eventsのためにサーバを必要としない – bigreddot特にボタンの場合、 'callback'プロパティを使用して' CustomJS'コールバックを設定したいと思うでしょう。下記をご覧ください – bigreddot