因为我可以像这样在 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/