gpt4 book ai didi

python - GTK 的 rSVG 在 Windows 中使用 python 的问题

转载 作者:太空宇宙 更新时间:2023-11-04 09:41:04 27 4
gpt4 key购买 nike

我有一个在 Linux 上运行良好的 python 脚本,可以使用 Cairo 和 GTK 操作 SVG 文件。在 Linux 上,我包含了这个库:

#import rsvg

我准备好了。在 Windows 上,它有点复杂。我找到了这个页面:http://cairographics.org/cairo_rsvg_and_python_in_windows/这建议使用给定的代码挂接到 Windows 上的 GTK dll。这似乎可行,但 glib 报告了我无法处理的错误,特别是:

GLib-WARNING **: GError set over the top of a previous GError or uninitialized memory. This indicates a bug in someone's code. You must ensure an error is NULL before it's set. The overwriting error message was: Error opening file: No such file or directory

运行这段代码时:

svg_file_name = "c:/test.svg" #also tried "c:\\test.svg" and "file:///c:/test.svg"
handler = rsvg.Handle(svg_file_name)
dim = handler.get_dimension_data()

我不确定它到底在说什么文件,因为我似乎无法从 glib 中获得任何错误细节。我已经尝试了相关 SVG 文件名的所有排列。我假设它是在提示那个文件,但它可能是我不知道的 GTK 内部的东西。

我已经尝试连接到 glib 的 DLL 并运行 g_clear_error(0) 以清除错误消息中提到的错误堆栈,但根据 glib 错误报告文档 (https://developer.gnome.org/glib/2.37/glib-Error-Reporting.html#g-clear-error),我需要一个句柄来导致问题的代码中的错误对象,如果我要对此做任何事情 - 从 python 中,我不确定我是如何得到它的。

欢迎提供有关 GTK 错误报告和从 python 清除的任何提示。如果做不到这一点,如果有人可以建议一个在 python for windows 中工作的替代 SVG 渲染库,我将不胜感激。 我已经尝试过 CairoSVG,它在一定程度上起作用但无法呈现渐变并且似乎不允许对 SVG 数据进行编程操作。

谢谢你的时间

最佳答案

为什么找不到文件我不知道,但是覆盖GError的问题就在这里:

error = ''
self.handle = l.rsvg_handle_new_from_file(self.path,error)

rsvg_handle_new_from_file() 需要一个指向 GError 的指针。相反,它得到一个空字符串,并且在需要使用它时非常困惑......那是行不通的。你可以尝试自己创建一个 GError 类,有一个例子 in this question .这并非完全微不足道:如果这不是用于生产代码,您可以跳过这部分并尝试找出找不到文件的原因...

对于找不到文件的问题,当文件在工作目录中时,可以尝试仅使用“test.svg”,以限制可能出现问题的范围。

关于python - GTK 的 rSVG 在 Windows 中使用 python 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21331436/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com