Python Plotly Dash:如何使用for循环生成html组件?

Python Plotly Dash:如何使用for循环生成html组件?,python,plotly-dash,Python,Plotly Dash,我想通过将字符串列表传递给生成这些按钮的构造函数来创建多个dbc.Button,方法如下: #-*-编码:utf-8-*- 导入破折号 将仪表板核心组件作为dcc导入 将dash_html_组件导入为html 导入破折号表 将plotly.express导入为px 从functools导入lru\U缓存 将dash_引导程序_组件作为dbc导入 从dash.dependencies导入输入 从dash.dependencies导入输出 从dash.dependencies导入状态 作为pd进口

我想通过将字符串列表传递给生成这些按钮的构造函数来创建多个
dbc.Button
,方法如下:


#-*-编码:utf-8-*-
导入破折号
将仪表板核心组件作为dcc导入
将dash_html_组件导入为html
导入破折号表
将plotly.express导入为px
从functools导入lru\U缓存
将dash_引导程序_组件作为dbc导入
从dash.dependencies导入输入
从dash.dependencies导入输出
从dash.dependencies导入状态
作为pd进口熊猫
数据={'teams':['team1','team2','team3','team4']}
df_团队=pd.DataFrame(数据)
def生成团队按钮(团队简称):
返回dbc.按钮(
str(团队简称),
color=“primary”,
className=“mr-1”,
id=str(团队简称),
),
外部_样式表=['https://codepen.io/chriddyp/pen/bWLwgP.css']
app=dash.dash(名称,外部样式表=[dbc.themes.BOOTSTRAP])
颜色={
“背景”:“111111”,
“文本”:“7FDBFF”
}
app.layout=html.Div(
[
dbc.行([
dbc.Col(
[为df_团队中的i生成_团队_按钮(i)。iterrows()]
) 
]),
],
)
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
app.run_服务器(debug=True)
但是,在尝试执行上述操作时,所有生成的按钮都会出现以下错误:


组件的children属性是列表列表,
而不仅仅是一张清单。检查具有以下功能的组件:
并删除其中一个嵌套级别:
[
{
“道具”:{
“子项”:“(0,0组1\n名称:0,数据类型:对象)”,
“id:”(0,0团队1\n名称:0,数据类型:对象)”,
“类名”:“mr-1”,
“颜色”:“主要”
},
“类型”:“按钮”,
“命名空间”:“dash\u引导\u组件”
}
]

如何生成按钮?

您的代码中有一个小错误,如果您删除
生成团队按钮()
函数后的逗号,您将不会再收到错误。您可能还希望将
df_teams.iterrows()
替换为
df_teams['teams']
,请参见下面的示例

import dash
import dash_html_components as html
import dash_bootstrap_components as dbc
import pandas as pd

external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css']

app = dash.Dash(__name__, external_stylesheets=[dbc.themes.BOOTSTRAP])

data = {'teams': ['team1', 'team2', 'team3', 'team4']}
df_teams = pd.DataFrame(data)

def generate_team_button(team_shortName):

    return dbc.Button(children=str(team_shortName),
                      color="primary",
                      className="mr-1",
                      id=str(team_shortName))


app.layout = html.Div([

        dbc.Row([

            dbc.Col(children=[generate_team_button(i) for i in df_teams['teams']])

        ])

])

if __name__ == '__main__':
    app.run_server(debug=True)

代码中有一个小错误,如果删除
generate\u team\u button()
函数后的逗号,将不会再出现错误。您可能还希望将
df_teams.iterrows()
替换为
df_teams['teams']
,请参见下面的示例

import dash
import dash_html_components as html
import dash_bootstrap_components as dbc
import pandas as pd

external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css']

app = dash.Dash(__name__, external_stylesheets=[dbc.themes.BOOTSTRAP])

data = {'teams': ['team1', 'team2', 'team3', 'team4']}
df_teams = pd.DataFrame(data)

def generate_team_button(team_shortName):

    return dbc.Button(children=str(team_shortName),
                      color="primary",
                      className="mr-1",
                      id=str(team_shortName))


app.layout = html.Div([

        dbc.Row([

            dbc.Col(children=[generate_team_button(i) for i in df_teams['teams']])

        ])

])

if __name__ == '__main__':
    app.run_server(debug=True)

非常感谢。那是逗号,我永远也想不到!谢谢你花时间!非常感谢。那是逗号,我永远也想不到!谢谢你花时间!