WebKit2.JavascriptResult.get_value() throws exception "TypeError: Couldn't find foreign struct converter for 'JavaScriptCore.Value'".

WebKit2.JavascriptResult.get_value() throws exception "TypeError: Couldn't find foreign struct converter for 'JavaScriptCore.Value'".

我正在编写一个基于 python3 + webkit2 + gtk3 的 GUI。一切正常,但是当我尝试在回调函数中使用 WebKit2.WebView.run_javascript_finish() 时,获取 return(WebKit2.JavascriptResult objetc),然后使用 WebKit2.JavascriptResult 提取值。 get_value(), 我收到了一个"TypeError: Couldn't find foreign struct converter for 'JavaScriptCore.Value'".

我有一个关于进口的 "from gi.repository import JavaScriptCore",我不知道为什么会出现这个错误。

ps: 抱歉我的英语不好。

很遗憾,Python 不支持使用 JavaScriptCore 库。

gi.repository.JavaScriptCore 中的定义仅包括 JavaScriptCore.ValueJavaScriptCore.GlobalContext 的不透明定义,以便为使用这些类型的函数提供类型信息;正如您可以通过查看 /usr/share/gir-1.0/JavaScriptCore-4.0.gir 来验证的那样。但正如您所发现的,您实际上无法调用这些函数,因为没有关于如何将这些类型转换为本机 Python 对象的信息。

我建议用 C 编写一个函数,它接受您的 WebKit2.JavaScriptResult 并从中获取您需要的任何信息,然后将该函数导出到它自己的私有 GIR 库中。因此,您不会在 Python 代码中使用任何 JavaScriptCore 类型。它可能是这样的:

from gi.repository import MyAppPrivate
# ...
def on_javascript_finish(obj, res):
    result = obj.run_javascript_finish(res)
    my_real_results = MyAppPrivate.process(result)