python - 从 python 中的 SVG 源在 GTK3 中绘制 SVG 图像

标签 python svg gtk

因为我可以像这样在 PyQt 中轻松地做到这一点:

img = '''<?xml version="1.0" encoding="UTF-8"?>
<svg width="50" height="50" xmlns="http://www.w3.org/2000/svg">
 <!-- Created with SVG-edit - http://svg-edit.googlecode.com/ -->
 <g>
  <title>Layer 1</title>
   <circle stroke-width="3" stroke="#1a1a1a" fill="#dfdbd2" r="16" cy="25" cx="25"/>
   <path stroke-width="0" fill="#1a1a1a" d="m25,9a16,16 0 0 0 0,32l0,-1.5a18,18 0 0 0 0,-29l0,-1.5z"/>
 </g>
</svg>'''
image = QtCore.QByteArray(img)
self.svgwidget.load(image)

我如何在 Gtk 中执行此操作?有任何想法吗? :) 提前致谢!

最佳答案

stream = Gio.MemoryInputStream.new_from_bytes(GLib.Bytes.new(img))
pixbuf = GdkPixbuf.Pixbuf.new_from_stream(stream, None)
self.svgwidget = Gtk.Image.new_from_pixbuf(pixbuf)

或者,如果您不介意额外的依赖关系,并且希望在加载 SVG 后做一些有趣的事情,请使用 rsvg 库:

svg = Rsvg.Handle.new_from_data(img)
pixbuf = svg.get_pixbuf()
svgwidget = Gtk.Image.new_from_pixbuf(pixbuf)

关于python - 从 python 中的 SVG 源在 GTK3 中绘制 SVG 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19452797/

相关文章:

c - 带视口(viewport)的滚动窗口的垂直尺寸没有最小但最大

python-3.x - 如何使用 Gtk 3 强制窗口小部件的大小

python - 最大化两个整数列表之间的总和? (有限制)

javascript - SVG 渲染成 Canvas ,在视网膜显示器上模糊

javascript - 顶部和底部凹陷的 svg

html - SVG 中的水平滚动

python - 如何在我的类中继承QtWidgets.QWidget并使我的类类型-QtWidgets.QWidget?

python - 在python中动态派生一个类

python - 比较 Pandas Dataframe 的列名

python - 确定 TreeView 行的高度