Некоторые элементы SVG не отображаются в приложении python webkitgtk - PullRequest
0 голосов
/ 13 июня 2019

Я пишу небольшое приложение для генерации принципиальных схем с использованием привязок python gtk3 с WebKit и SchemDraw. Мое намерение состоит в том, чтобы использовать вывод svg SchemDraw (использует внутренне matplotlib) и отобразить его в виджете WebView. Когда я загружаю svg, сгенерированный matplotlib (из файла и из StringIO), некоторые элементы горизонтальной и вертикальной линий отсутствуют в окне WebView.

Я попытался открыть одни и те же файлы SVG в нескольких браузерах (Firefox, Google Chrome и Epiphany), и все элементы отображаются правильно. Я подумал, что Epiphany будет хорошим тестом, поскольку он использует экземпляры WebView, хотя и в C.

Программа GTK:

import pgi as gi
gi.install_as_gi()
gi.require_version('Gtk', '3.0')
gi.require_version('WebKit', '3.0')
from gi.repository import Gtk
from gi.repository import Gdk
from gi.repository import WebKit
print ("PyGtk v%s" % gi.__version__)

# Test webkit SVG rendering
window = Gtk.Window(title="Hello World")
webview1 = WebKit.WebView()
webview1.open('file:///redacted_path/example.svg')
window.add(webview1)
window.show_all()
window.connect("destroy", Gtk.main_quit)
Gtk.main()

Код, который отображает example.svg (пример на веб-сайте SchemDraw):

import SchemDraw as schem
import SchemDraw.elements as e
d = schem.Drawing()
V1 = d.add(e.SOURCE_V, label='10V')
d.add(e.RES, d='right', label='100K$\Omega$')
d.add(e.CAP, d='down', botlabel='0.1$\mu$F')
d.add(e.LINE, to=V1.start)
d.add(e.GND)
d.draw()
d.save("example.svg")

Я подозреваю, что требуется еще несколько настроек экземпляра WebView, чтобы это работало аналогично протестированным браузерам, но я не уверен, как действовать дальше.

...