Как получить значение флажка в колбе - PullRequest
0 голосов
/ 26 июня 2019

Я прошел следующие статьи, чтобы получить ясность.

Колба не получает значение флажка

Отправить данные из текстового поля во Flask?

Хотя они информативны, HTML-код в этих вопросах прост.

Это мой код.

from flask import Flask, render_template, request, jsonify
import webbrowser
from threading import Timer
import pandas as pd
import warnings
from bokeh.io import output_file
from bokeh.models.widgets import CheckboxGroup
from bokeh.plotting import save

flat_list=['S&P 500',
 'Nasdaq 100',
 'Russell 2000',
 'MSCI Europe',
 'STOXX Europe 600',
 'Nikkei 225',
 'MSCI Japan',
 'MSCI EM',
 'MSCI US REIT',
 'Commodities',
 'US Corp HY',
 'US Corp IG',
 'LT US Treasuries (20+)',
 'LT US Treasuries(10-30)',
 'Gold',
 'Barclays Agg. Bond Index',
 'CPA(7-10YR Treasury)',
 'Rf']

output_file("dropdown_list.html")
dropdown = CheckboxGroup(labels=flat_list)
save(dropdown)

app = Flask(__name__)

@app.route('/process',methods=["GET", "POST"])
def process():
    if request.method == 'POST':
        data = request.json
        return jsonify(data)
    #return render_template("form.html")
    return render_template("dropdown_list.html")

def open_browser():
      webbrowser.open_new('http://127.0.0.1:2000/process') 

if __name__ == '__main__':

    Timer(1, open_browser).start();
    app.run(port=2000)

Код открывает dropdown_list html. Как вернуть флажки в колбу?

1 Ответ

0 голосов
/ 26 июня 2019

Лучше всего было бы настроить флажок Bokeh с обратным вызовом CustomJS, который самостоятельно создает POST для вашего приложения фляги, например, сделать что-то подобное в коде, который фактически создал содержимое Bokeh:

callback = CustomJS(args=dict(widget=dropdown), code="""
    // JS code to post widget.active back to you app goes here 
""")

dropdown.js_on_change('active', callback)
...