Apakah mungkin menggunakan js_on_event untuk widget Div? Saya akhirnya ingin memicu panggilan balik dengan python setiap kali suatu peristiwa dipicu pada widget Div (ketuk, tekan, mouse masuk, cuti mouse, dll), dan saya kira melalui js_on_event adalah caranya untuk melakukannya(?). Bagaimanapun, saya sudah mencoba yang berikut ini:

from bokeh import events
from bokeh.layouts import layout
from bokeh.models import CustomJS, Div

from lib.bokeh.util.bokeh_util import display

div = Div(style={'background': 'gray', 'min-width': '500px', 'min-height': '500px'})

div.js_on_event(events.Tap, CustomJS(code="""
    console.log("Does this work?")
    """))

display(layout(div, sizing_mode='stretch_both'))

Tapi sepertinya ini tidak berpengaruh.

display adalah fungsi praktis yang menyalakan bokeh Server.

0
Martin Rindarøy 15 Maret 2020, 21:09

1 menjawab

Jawaban Terbaik

Untuk memicu panggilan balik Python, Anda memerlukan on_event. js_on_event adalah untuk memicu kode JS di browser, tanpa komunikasi apa pun dengan server.

Namun bagaimanapun juga, peristiwa Tap hanya berfungsi pada instance Plot - tidak berfungsi pada model lain, meskipun memiliki representasi visual.

Ada dua cara untuk menyelesaikan masalah Anda. Jika Anda hanya membutuhkan sesuatu yang sederhana seperti acara Tap, Anda dapat (dan mungkin harus) menggunakan Button biasa. Tetapi jika Anda memerlukan sesuatu yang lebih rumit, Anda dapat membuat model Bokeh khusus yang akan memproses setiap peristiwa JS, mengonversinya menjadi peristiwa Bokeh, dan mengirimkannya ke server.

1
bigreddot 15 Maret 2020, 18:56