从应用程序调用时,CEFPython 不会初始化

CEFPython won't initialized when called from an application

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

的一些生成的 HTML 内容

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

起初,它在我设计的 UI 中效果很好。

但是,问题在于此 UI 旨在从另一个应用程序调用,作为一种 "plug-in 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'

最后我有两个问题:

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

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



您的 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, 之前,但是由于您的 non-standard Python 环境,您可能仍会遇到其他问题。