2017-02-23 79 views
0

Я обнаружил следующую проблему при работе с Bokeh (0.12.4): Когда я устанавливаю ширину элемента «Выбрать» таким образом, чтобы он не мог отображать его содержимое в полном объеме Bokeh приспособит размер.Виджеты Bokeh CSS

Это имеет тенденцию нарушать макет, который я имею в виду (разумеется, я не очень хороший ). Мой текущий «обходной путь» является на самом деле определить следующий шаблон HTML:

<!DOCTYPE html> 
<html lang="en"> 
    <head> 
     <style> 
      @import url(https://fonts.googleapis.com/css?family=Noto+Sans); 
      body { 
       font-family: 'Noto Sans', sans-serif; 
       -webkit-font-smoothing: antialiased; 
       text-rendering: optimizeLegibility; 
       color: #fff; 
       background: #2F2F2F; 
      } 

      .selector select{ 
       width: 97%; 
       overflow: hidden; 
      } 
     </style> 
     <meta charset="utf-8"> 
     <title>Bokeh Crossfilter Example</title> 
     {{ bokeh_css }} 
     {{ bokeh_js }} 
    </head> 
    <body> 
     {{ plot_script|indent(8) }} 
     {{ plot_div|indent(8) }} 
    </body> 
</html> 

(NB это заимствовано из примеров бока) и жесткий код класса CSS в сценарий, потому что, по-видимому, бок не принимает те же настройки, если она осуществляется через theme.yaml

# -*- coding: utf-8 -*- 
from bokeh.layouts import row 
from bokeh.models import Select 
from bokeh.plotting import curdoc, figure 

def plot_placeholder(): 
    p = figure(tools='pan,box_zoom,reset',responsive=True); 
    return p 

############################################ 
#options 
Data = ['Supercalifragilisticexpialidocious', 'dumb', 'example'] 
sel = Select(title='Option 1', value = 'None', options = ['None'] + Data, name='OptionSelector', css_classes=['selector']) 

############################################################################# 
layout = row([sel, plot_placeholder()], sizing_mode='fixed', width=400) 

curdoc().add_root(layout) 
curdoc().title = "Statistical Plots" 

Это работает, но мне интересно, можно ли сделать это с помощью Python-только реализации. . Я хотел бы знать, можно ли обойтись без определения шаблона И , заставляющего свойства для всех селекторов.

Кроме того, как расширение этой проблемы, как передать файл CSS в Bokeh, не прибегая к шаблонам. Я пробовал CSSResources, но ничего не получал, поскольку он будет давать список файлов CSS, этот список не может быть изменен.

ответ

1

Что касается вашего последнего вопроса, вы можете иметь макет примерно так: (Для простоты у меня просто есть styles.css в том же каталоге, что и index.html, но вы можете добавить это как static/css/styles .css, если хотите).

<!DOCTYPE html> 
    <html lang="en"> 
     <head> 
      <meta charset="utf-8"> 
      <title> Title here </title> 
      {{ bokeh_css }} 
      {{ bokeh_js }} 
      <style>  
       {% include 'styles.css' %} 
      </style> 
+0

Благодарим за информацию. Моя цель - приложение Bokeh, которое требует минимум работы за пределами python (желательно ни одного). – Nox

+0

Я попытаюсь установить эти значения внутри python и сообщить вам, смогу ли я найти решение позже. – Anthonydouc

Смежные вопросы