2

我用cefpython做了一个简单的屏幕外渲染器。

我使用过cefpython.MessageLoop(),但我想执行一个browser.GetFocusedFrame().ExecuteFunction必须从主 UI 线程调用的 javascript 函数。

有没有办法在cefpython的消息循环上设置回调?

或者我可以使用MessageLoopWork,但我不知道如何。我试图在一个单独的线程中调用它,但它不起作用:

import threading

def main_loop():
    cefpython.MessageLoopWork()
    threading.Timer(0.01, main_loop).start()

threading.Timer(0.01, main_loop).start()

我收到以下错误:

[0324/174806:ERROR_REPORT:context.cc(146)] Check failed: false. called on invalid thread
4

1 回答 1

1

使用 cefpython.PostTask() 函数在各种 CEF 线程上发布任务。请参阅:https://code.google.com/p/cefpython/wiki/cefpython#PostTask_(int_threadId,_object_func_[,args..])_(void)和第 61 期。它从 31.0 版开始可用。

wxpython.py 示例展示了如何将计时器与 MessageLoopWork() 和 MessageLoop() 一起使用。

于 2015-03-24T17:22:41.253 回答