首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用SVGWRITE在Python中添加到SVG元素的链接

使用SVGWRITE在Python中添加到SVG元素的链接
EN

Stack Overflow用户
提问于 2018-02-17 15:17:55
回答 2查看 1K关注 0票数 1

我正在尝试构建一个SVG,它将具有特色行,每一行都将链接到同一文档中的其他部分。然而,我一直得到一个ValueError,上面写着"Invalid children 'line' for svg-element <a>.

此MWE复制错误:

代码语言:javascript
复制
import svgwrite

test = svgwrite.Drawing('test.svg', profile='tiny',size=(100, 100))

link = test.add(test.a('http://stackoverflow.com'))
link.add(test.line(start=(0,0),end=(100,100)))

test.save()

我得到了与其他绘图元素(省略号、rect等)相同的错误,但这些元素当然允许作为链接的子元素。

我遗漏了什么?

Python版本: 2.7.10 svgwrite版本: 1.1.6 (由pkg_resources报告)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-02-17 17:28:16

罗伯特·朗森提供了工作代码,但我看到的并不是惯用的代码。我认为语法“完全错误”的说法是有误导性的(尽管我对更有说服力的论证持开放态度)。

删除我的示例中的配置文件规范修复了它--并且在导出这个最小示例的大型项目中同样有效。对我来说,这不是一个完全令人满意的答案,因为我不明白,基于阅读微小规格为什么链接会导致这个问题,但它是一个答案,它实现了期望的结果,而不偏离我见过的svgwrite的典型用法。

票数 0
EN

Stack Overflow用户

发布于 2018-02-17 16:21:49

在svgwrite中,您似乎使用了完全错误的元素创建语法。

根据文档,链接是通过调用svgwrite.container.Hyperlink创建的,行是通过调用svgwrite.shapes.Line创建的

一旦修复,你仍然不会看到任何线,没有笔画集是不可见的。我增加了一个笔画,并设置的笔画宽度比正常范围以下,所以有一些可以点击。

代码语言:javascript
复制
import svgwrite

test = svgwrite.Drawing('test.svg', profile='tiny',size=(100, 100))

link = test.add(svgwrite.container.Hyperlink('http://stackoverflow.com'))
link.add(svgwrite.shapes.Line(start=(0,0),end=(100,100),stroke_width="5",stroke="black"))

test.save()

这将产生以下输出

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8" ?>
<svg baseProfile="tiny" height="100" version="1.2" width="100" xmlns="http://www.w3.org/2000/svg" xmlns:ev="http://www.w3.org/2001/xml-events" xmlns:xlink="http://www.w3.org/1999/xlink"><defs /><a target="_blank" xlink:href="http://stackoverflow.com"><line stroke="black" stroke-width="5" x1="0" x2="100" y1="0" y2="100" /></a></svg>

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48842782

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档