hereでチュートリアル後、私は、クリック、ダブルクリックアクションの異なるアクションを持つ拡張を作成したボケチャットからいくつかの助けを借りて:例
from bokeh.core.properties import Instance
from bokeh.io import output_file, show
from bokeh.models import ColumnDataSource, TapTool, CustomJS, OpenURL
from bokeh.plotting import figure
output_file('tool.html')
JS_CODE = """
p = require "core/properties"
TapTool = require "models/tools/gestures/tap_tool"
class NewTapToolView extends TapTool.View
_get_canvas_position: (e) ->
canvas = @plot_view.canvas
vx = canvas.sx_to_vx(e.bokeh.sx)
vy = canvas.sy_to_vy(e.bokeh.sy)
return [vx, vy]
_tap: (e) ->
console.log('click')
[vx, vy] = @_get_canvas_position(e)
append = e.srcEvent.shiftKey ? false
@_select(vx, vy, true, append)
_doubletap: (e) ->
console.log('double click')
[vx, vy] = @_get_canvas_position(e)
append = false
@_select(vx, vy, true, append)
class NewTapTool extends TapTool.Model
default_view: NewTapToolView
type: "NewTapTool"
tool_name: "New Tap Tool"
@define { source: [ p.Instance ] }
module.exports =
Model: NewTapTool
View: NewTapToolView
"""
class NewTapTool(TapTool):
__implementation__ = JS_CODE
source = Instance(ColumnDataSource)
x = y = [i for i in range(10)]
source = ColumnDataSource(data=dict(x=x, y=y))
plot = figure(x_range=(0, 10), y_range=(0, 10), tools=[NewTapTool(source=source)])
plot.title.text = "Double click on a dot to test"
plot.circle('x', 'y', source=source, size=10)
newtaptool = plot.select(type=TapTool)
newtaptool.callback = OpenURL(url="https://en.wikipedia.org/")
show(plot)
二重丸をクリックするだけで、ウィキペディアを開きます。 _tap
機能では、クリック1つの動作をカスタマイズすることができます。私はそれが助けて欲しい!
現在の「TapTool」は、1回だけタップをサポートしています。ダブルクリックするように設定することも難しくないかもしれません。この機能を追加するPRに興味があれば、私たちはいつも質問に答えることができ、人々がBokeh開発を始めるのを手伝ってくれることを嬉しく思います。代わりに[Bokehは拡張可能です]、これを行うカスタムツール拡張を書くこともできます。 – bigreddot