Размещение виджета элементов управления Bokeh Виджет над вкладками - PullRequest
0 голосов
/ 13 января 2019

Этот вопрос касается размещения виджетов управления над виджетом вкладок в Bokeh.

У меня есть рабочий код, который создает макет вкладок, где на каждом листе вкладок имеется элемент управления, установленный над графиком:

def make_plots(self):
    p1 = self.make_plot(...
    p2 = self.make_plot(...
    p3 = self.make_plot(...
    p4 = self.make_plot(...

    c1 = MakeControls(self)
    c2 = MakeControls(self)
    c3 = MakeControls(self)
    c4 = MakeControls(self)

    # put these in a tuple so they can be synchronized whenever one changes
    self.plot_set    = (p1, p2, p3, p4)
    self.control_set = (c1, c2, c3, c4)

    p1_ = Column(c1.controls, p1)
    p2_ = Column(c2.controls, p2)
    p3_ = Column(c3.controls, p3)
    p4_ = Column(c4.controls, p4)
    tab1 = Panel(child = p1_, title = self.type_labels[1])
    tab2 = Panel(child = p2_, title = self.type_labels[2])
    tab3 = Panel(child = p3_, title = self.type_labels[3])
    tab4 = Panel(child = p4_, title = self.type_labels[4])
    tabs = Tabs(tabs=[tab1,tab2,tab3,tab4])

    return tabs

И объект tabs успешно добавлен в корень документа. Все отлично работает.

Я получил предложение о том, что, поскольку все мои элементы управления идентичны и я их синхронизирую, я должен просто использовать один набор элементов управления и поместить их над вкладками.

Итак, я попробовал это:

def make_plots(self):
    p1 = self.make_plot(...
    p2 = self.make_plot(...
    p3 = self.make_plot(...
    p4 = self.make_plot(...

    c1 = MakeControls(self)

    tab1 = Panel(child=p1, title=self.type_labels[1])
    tab2 = Panel(child=p2, title=self.type_labels[2])
    tab3 = Panel(child=p3, title=self.type_labels[3])
    tab4 = Panel(child=p4, title=self.type_labels[4])
    tabs = Tabs(tabs=[tab1, tab2, tab3, tab4])

    p = Column(c1,tabs)

    return p

Я получаю сообщение об ошибке, используя Column таким образом. Это сработало, когда я сложил один набор элементов управления над одним рисунком графика, но не сработало, когда я попытался сложить один набор элементов управления над набором вкладок.

Единственное сообщение, которое я вижу, которое могло бы иметь смысл, это следующее:

ValueError: ожидал элемент List (Instance (LayoutDOM)), получил seq с недопустимыми элементами

Как правильно это сделать?

...