Reportlab选项卡

2024-10-03 02:41:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用Reportlab建立一个传奇(通过一个表)。这个表应该有三行两列,每个i,j元素是一个带有彩色项目符号的ListItem。代码如下:

    ptext = '<font size=10><b><i>Legend:</i></b></font>'
    light = []
    mild = []
    strong = []

    #Create the table
    ptext = '<font size=10>Light Barrier</font>'
    light.append(ListFlowable(ListItem(Paragraph(ptext, styles["Normal"]), 
                               bulletColor = lightRed, value = 'circle'), bulletType = 'bullet', start = 'circle'))
    ptext = '<font size=10>Light Benefit</font>'
    light.append(ListFlowable(ListItem(Paragraph(ptext, styles["Normal"]), 
                               bulletColor = lightGreen, value = 'circle'), bulletType = 'bullet', start = 'circle'))
    ptext = '<font size=10>Mild Barrier</font>'
    mild.append(ListFlowable(ListItem(Paragraph(ptext, styles["Normal"]), 
                               bulletColor = mildRed, value = 'circle'), bulletType = 'bullet', start = 'circle'))
    ptext = '<font size=10>Mild Benefit</font>'
    mild.append(ListFlowable(ListItem(Paragraph(ptext, styles["Normal"]), 
                               bulletColor = mildGreen, value = 'circle'), bulletType = 'bullet', start = 'circle'))
    ptext = '<font size=10>Strong Barrier</font>'
    strong.append(ListFlowable(ListItem(Paragraph(ptext, styles["Normal"]), 
                               bulletColor = strongRed, value = 'circle'), bulletType = 'bullet', start = 'circle'))
    ptext = '<font size=10>Strong Benefit</font>'
    strong.append(ListFlowable(ListItem(Paragraph(ptext, styles["Normal"]), 
                               bulletColor = strongGreen, value = 'circle'), bulletType = 'bullet', start = 'circle'))

    #Append them to the table
    data = [light, mild, strong]
    t = Table(data)
    Story.append(t)

我得到的错误是:

"ListItem is not iterable".

感谢任何帮助。


Tags: sizevaluestartnormalfontcircleappendstyles
1条回答
网友
1楼 · 发布于 2024-10-03 02:41:03

最后,我想出了一个解决方案,我把它贴在下面。请注意,发布的解决方案回答了这样一个问题:在条目(a_ij)是ListItems的情况下,我如何制作一个Reportlab表?答案是,您需要在ListFlowable中包含ListItems,在嵌套的Python列表中包含ListFlowables。代码如下:

    a11 = ListFlowable([ListItem(Paragraph('<font size=10>Light Barrier</font>', styles["Normal"]), 
                               bulletColor = lightRed, value = 'circle')], bulletType = 'bullet', start = 'circle')
    a12 = ListFlowable([ListItem(Paragraph('<font size=10>Light Benefit</font>', styles["Normal"]), 
                               bulletColor = lightGreen, value = 'circle')], bulletType = 'bullet', start = 'circle')
    a21 = ListFlowable([ListItem(Paragraph('<font size=10>Mild Barrier</font>', styles["Normal"]), 
                               bulletColor = mildRed, value = 'circle')], bulletType = 'bullet', start = 'circle')
    a22 = ListFlowable([ListItem(Paragraph('<font size=10>Mild Benefit</font>', styles["Normal"]), 
                               bulletColor = mildGreen, value = 'circle')], bulletType = 'bullet', start = 'circle')
    a31 = ListFlowable([ListItem(Paragraph('<font size=10>Strong Barrier</font>', styles["Normal"]), 
                               bulletColor = strongRed, value = 'circle')], bulletType = 'bullet', start = 'circle')
    a32 = ListFlowable([ListItem(Paragraph('<font size=10>Strong Benefit</font>', styles["Normal"]), 
                               bulletColor = strongGreen, value = 'circle')], bulletType = 'bullet', start = 'circle')

    data = [[a11, a12,], [a21, a22,], [a31, a32,],]
    t = Table(data, colWidths=[1.3*inch]*2, rowHeights=[0.17*inch]*3, hAlign='RIGHT')
    Story.append(t)

相关问题 更多 >