Я хочу создать пользовательский виджет bokeh без использования JavaScript, то есть без последующей документации bokeh по адресу Adding A Custom Widget. В приведенном ниже примере демонстрируется создание пользовательского виджета в PyQt4 (я использую это много) и что я ожидаю работать в боке вместе с сообщением об ошибке, которое я получаю.добавить пользовательский виджет python bokeh без JavaScript
Есть ли другой способ создания пользовательского виджета в боке без использования JavaScript? В частности, я пытаюсь создать пользовательский слайдер с кнопками «маленький» и «+» с каждой стороны, которые увеличивают/уменьшают ползунок на 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: Конкретный пользовательский виджет Я пытаюсь создать слайдер с кнопкой на каждой стороне (слева с надписью «-», справа с меткой «+»), которые изменяют значение Slider с помощью 1 шаг. Это используется для точной настройки значения ползунка, так что мышь не требуется точно достигать целевого значения. Я создал этот настраиваемый виджет, связав объекты по умолчанию Slider и Button, и он отображается в браузере, но функция обратного вызова не работает (в частности, метод Slider 'on_change').
Это пользовательский виджет просто реализовать с боком и JS? Есть ли онлайн-ссылка, которая может давать подсказки без глубокого погружения в JS.
'.on_change' требует сервера Боке (это где питон обратного вызова запускается на выполнение) Вы говоря, что это не работает с серверным приложением? Или это не в контексте серверного приложения? В любом случае, похоже, что это должно быть выполнено более всего с помощью строки или двух из JS и обратного вызова .js_on_change': http://bokeh.pydata.org/en/latest/docs/user_guide/interaction/callbacks.html # customjs-for-generic-events, для которого не требуется сервер – bigreddot
Для кнопок, в частности, вы все равно хотите использовать свойство callback для установки обратного вызова 'CustomJS'. См. Ниже – bigreddot