1

我有一个非常非常具体的问题。我试图找出一种在我的应用程序中嵌入 HTML 浏览器的方法,以便显示一些包含 javascript 的生成的 HTML 内容。

我试图用 wx.html2 来做,但 javascript 部分似乎不起作用。所以我决定以提供的 wxPython.py 演示为例来尝试一下 CEFPython。

起初,它在我设计的 UI 中运行良好。

但是,问题在于该 UI 旨在从另一个应用程序调用,作为一种“插件 UI”。当从这个应用程序启动我的 wxPython UI 时,它会在 cef 初始化后立即崩溃(通过:

sys.excepthook = cef.ExceptHook
settings = {
    "debug": True,
    "log_severity": cef.LOGSEVERITY_INFO,
   "log_file": "debug.log",
}
cef.Initialize(settings=settings)
app = CefApp(False)
app.MainLoop()
del app
cef.Shutdown()

我不断收到此错误:

Python exception: AttributeError
'module' object has no attribute 'argv'
Traceback (most recent call last):
  File "<string>", line 248, in <module>
  File "<string>", line 36, in main
  File "cefpython_py27.pyx", line 626, in cefpython_py27.Initialize 
(cefpython_py27.cpp:99136)
AttributeError: 'module' object has no attribute 'argv'

所以最后我有2个问题:

  1. wx.html2 有没有办法显示嵌入 javascript 的 HTML 内容
  2. 如果没有,您是否知道什么会导致启动的 UI 崩溃?我想这是一个线程问题,但我什至不确定。

顺便说一句,请原谅我的英语错误,因为我不是本地人。



4

1 回答 1

1

您的 Python 环境似乎没有以标准方式运行,您没有提供如何调用 Python 代码的详细信息。

在这一行抛出了cefpython中的错误:

if "--debug" in sys.argv:
    application_settings["debug"] = True

https://github.com/cztomczak/cefpython/blob/bbf3597ba47f72db66cf304ab8eb3ccfc3a7130c/src/cefpython.pyx#L631

你必须找出为什么你的 Python 没有定义“sys.argv”。您可以使用以下代码轻松解决此问题:sys.argv = []在调用之前,cef.Initialize,由于您的非标准 Python 环境,您可能仍会遇到其他问题。

于 2018-03-09T15:58:08.657 回答