在破折号内渲染 html 对象,使其与破折号下拉菜单无关

时间:2021-04-08 16:38:01

标签: python html plotly-dash

我正在尝试使用 Python Dash 框架构建仪表板,我需要嵌入 html 对象,该对象是由 keplergl 库生成的地图。 基本上我可以通过将 keplergl 保存为 html 对象并从 iframe 中读取它来完成它,它工作正常,但我需要这个地图是交互式的,所以用户可以从破折号下拉列表中选择值来更改配置中的一些数据,以便更改地图数据

实际上可以按如下方式动态生成地图:

map2 = KeplerGl(height=400, data={'geodt_if': df}, config = config)

from flask import Flask
app= Flask(__name__)

@app.route('/')
def index():
    return map2._repr_html_()

if __name__ == '__main__':
    app.run()

这就是读取保存的 HTML 的工作原理

app = dash.Dash(__name__, external_stylesheets=[dbc.themes.BOOTSTRAP])
app.layout = dbc.Container([
    dbc.Row([
        dbc.Col([
            html.H2("Dashboard")
        ])
    ]),
    dbc.Row(
    [
        dbc.Col(dcc.Dropdown(id='dropdown',
                             options=[{'label': 'A', 'value': 'A'},
                                      {'label': 'B', 'value': 'B'} 
                                     ])
                )
    ]
    ),
    html.Iframe(id='map1',srcDoc=open('geoIF.html','r').read(),width = '100%', height = '600')
], fluid=True)

app.run_server()

所以有没有办法在 html.Iframe() 和 Dash 应用程序中渲染 map2.repr_html() 而不是仅仅将 html 读取为 srcDoc=open('geoIF.html','r ').read()

非常感谢!

0 个答案:

没有答案