[英]Adding links to SVG elements in Python using SVGWRITE
我正在嘗試構建一個具有行的SVG,每行將鏈接到同一文檔中其他地方的一部分。 但是,我不斷收到ValueError
,指出“ Invalid children 'line' for svg-element <a>.
”
此MWE重現該錯誤:
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()
我在其他圖形元素(省略號,矩形等)上也遇到了相同的錯誤,但是這些元素肯定可以作為鏈接的子級。
我想念什么?
Python版本:2.7.10 svgwrite版本:1.1.6(由pkg_resources
報告)
您似乎在svgwrite中使用完全錯誤的語法來創建元素。
根據文檔的鏈接是通過一個調用創建svgwrite.container.Hyperlink通過將呼叫和線路svgwrite.shapes.Line
一旦解決此問題,您將看不到任何東西,因為沒有筆畫集的線是不可見的。 我添加了一個筆觸,並將筆觸寬度設置為比下面的正常寬,因此需要單擊一些內容。
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()
這將產生以下輸出
<?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>
羅伯特·朗森(Robert Longson)提供了有效的代碼,但從我所見,這並不是慣用的。 而且我認為有關語法“完全錯誤”的建議具有誤導性(盡管我願意接受更具說服力的演示)。
在我的示例中,刪除配置文件規范可以解決該問題,並且在衍生出此最小示例的較大項目中也可以正常使用。 這對我來說不是一個完全令人滿意的答案,因為基於閱讀小規范的 原因 ,我不理解鏈接是導致此問題的原因,但這是一個答案,可以在不偏離svgwrite的典型用法的情況下達到所需的結果我見過。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.