簡體   English   中英

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

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM