Python reportlab库之Widget(含demo)

作者: iCloudEnd | 来源:发表于2019-02-19 23:15 被阅读6次

    写了好几篇关于ReportLib Graphics的文章,Drawings一致都是“纯数据”模式,没有任何实际进行的代码。事实上,这么设计有极大好处的,基于Drawings我们可以轻松的实现代码的可以执行性。具体的工作都交给相关Renderer来实现。
    作为一个合格开发者要懂得复用,一个好的开源库同样也必须支持复用。widget就是为了这个使命而被设计的。

    Widget是构建子shape上的标准模块,任何人都可以创建新的widget,也可以创建相关的widget库。下面是widget的一些特点:

    • 一个widget就是一组复用的shape
    • widget可以在初始化时没有任何参数,当它被draw()时可以通过Shape或Group来代表自己
    • widget可以配置任何参数
    • widget有个demo()方法,可以在需要预览时生成一个200x100的图形。

    代码

    from reportlab.lib import colors
    from reportlab.graphics import shapes
    from reportlab.graphics import widgetbase
    from reportlab.graphics import renderPDF
    d = shapes.Drawing(200, 100)
    f = widgetbase.Face()
    f.skinColor = colors.yellow
    f.mood = "sad"
    d.add(f)
    renderPDF.drawToFile(d, 'face.pdf', 'A Face')
    
    

    效果图


    face demo

    相关文章

      网友评论

        本文标题:Python reportlab库之Widget(含demo)

        本文链接:https://www.haomeiwen.com/subject/romqyqtx.html