我在Flask网络应用程序中嵌入了以下来自Bokeh的用户交互示例。
它使用户能够在点绘制工具(右上角)被激活时创建,拖动和移除点。
我试图通过这个简单的示例获取用户生成的数据,以便进一步处理。
这可能吗? 我可以将数据同步回python服务器端吗? 如果是,有人可以概述一下如何做的步骤吗?
来自webapp.py的代码
from flask import Flask, render_template
from bokeh.plotting import figure, ColumnDataSource, Column
from bokeh.models import DataTable, TableColumn, PointDrawTool, ColumnDataSource
from bokeh.embed import components
from bokeh.resources import INLINE
app = Flask(__name__)
@app.route("/")
def show_data():
p = figure(x_range=(0, 10), y_range=(0, 10), tools=[],
title='Point Draw Tool')
p.background_fill_color = 'lightgrey'
source = ColumnDataSource({
'x': [1, 5, 9], 'y': [1, 5, 9], 'color': ['red', 'green', 'yellow']
})
renderer = p.scatter(x='x', y='y', source=source, color='color', size=10)
columns = [TableColumn(field="x", title="x"),
TableColumn(field="y", title="y"),
TableColumn(field='color', title='color')]
table = DataTable(source=source, columns=columns, editable=True, height=200)
draw_tool = PointDrawTool(renderers=[renderer], empty_value='black')
p.add_tools(draw_tool)
p.toolbar.active_tap = draw_tool
script, div = components(Column(p,table))
return render_template('index.html', script=script, div=div, js_resources=js_resources,
css_resources=css_resources)
js_resources = INLINE.render_js()
css_resources = INLINE.render_css()
if __name__ == '__main__':
app.run(port=5000, debug=True)
index.html的代码
<!-- index.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>User Interaction</title>
{{ js_resources|safe }}
{{ css_resources|safe }}
{{ script|safe }}
</head>
<body>
{% block body %}
{{ div|safe }}
{% endblock %}
</body>
</html>