Как показать виджет DatePicker? - PullRequest
0 голосов
/ 10 октября 2018

У меня есть следующий код:

from bokeh.plotting import curdoc
from bokeh.layouts import widgetbox
from bokeh.layouts import column as bokehCol
from bokeh.models.layouts import Column
from bokeh.models.widgets import DatePicker
from datetime import date
from datetime import timedelta as td
from datetime import datetime as dt
from bokeh.io import output_notebook
from bokeh.plotting import show

output_notebook()

crnt_date=dt.now()

dt_pckr_strt=DatePicker(title='Select start of sync date',min_date=date(2017,1,1),max_date=date.today())

def callback(attr,old,new):
    print(type(old))
    print('old was {} and new is {}'.format(old,new))

dt_pckr_strt.on_change('value',callback)
curdoc().add_root(bokehCol(dt_pckr_strt))
show(widgetbox(dt_pckr_strt, width=300))

Вывод показывает странный вместо обычного выбора даты.Я считаю, что это в функции шоу, я делаю какую-то ошибку.Куда я иду не так?

Ответы [ 2 ]

0 голосов
/ 06 февраля 2019

Этот код работает для меня (исправлена ​​проблема встраивания сервера Bokeh в ноутбук Jupyter)

from bokeh.plotting import curdoc
from bokeh.layouts import widgetbox
from bokeh.layouts import column as bokehCol
from bokeh.models.layouts import Column
from bokeh.models.widgets import DatePicker
from datetime import date
from datetime import timedelta as td
from datetime import datetime as dt
from bokeh.io import output_notebook
from bokeh.plotting import show
from bokeh.application import Application
from bokeh.application.handlers import FunctionHandler

output_notebook()

def modify_doc(doc):

    crnt_date=dt.now()

    dt_pckr_strt=DatePicker(title='Select start of sync date',min_date=date(2017,1,1),max_date=date.today())


    def callback(attr,old,new):
        print(type(old))
        print('old was {} and new is {}'.format(old,new))



    dt_pckr_strt.on_change('value',callback)

    doc.add_root(bokehCol(dt_pckr_strt))


app = Application(FunctionHandler(modify_doc))
show(app) #notebook_url="localhost:8888"

enter image description here

0 голосов
/ 10 октября 2018

Вы не делаете ничего плохого (более или менее - если вы хотите использовать реальные обратные вызовы Python, например, on_change, вам придется встроить серверное приложение Bokeh , но это отдельная проблема),Однако, похоже, что что-то в среде ноутбука мешает правильной работе виджета выбора даты Bokeh.Тот же код в автономном HTML-файле, созданном с помощью output_file, имеет средство выбора рабочей даты.Я бы посоветовал подать отчет об ошибке на трекере проблем Bokeh со всей этой информацией.К сожалению, в настоящее время у меня нет простых решений.

...