关闭cefpython客户端并重启一个新的

时间:2018-07-16 19:24:29

标签: python-3.x cefpython

在应用程序流程中,我想关闭正在运行的cefpython客户端并打开一个新客户端;我有这个功能

....
while True:
    settings = {...}
    settings2= {...}
    cef.Initialize(settings=settings)
    self.BROWSER = cef.CreateBrowserSync(url=url,
                                         window_title="Tutorial", 
                                         browserSettings=settings2)

    bindings = cef.JavascriptBindings(bindToFrames=False,
                                      bindToPopups=False)
    bindings.SetFunction("backend", func)
    self.BROWSER.SetJavascriptBindings(bindings)


    cef.MessageLoop()
    cef.Shutdown()

在另一个函数中,我有这个调用

self.BROWSER.CloseBrowser(True)

浏览器在首次运行时启动,并且已关闭,但不会重新启动。如果我发表评论

...
cef.MessageLoop()
#cef.Shutdown()

在第一个功能中,浏览器确实重新启动,但是卡住了,我无法使用它。 预先感谢。

1 个答案:

答案 0 :(得分:0)

cef.Initializecef.Shutdown之类的功能在应用生存期内只能被调用一次。您也不应多次致电cef.MessageLoop。您的代码while True没有多大意义,因为您没有给浏览器足够的时间进行初始化和加载。您应根据要完成的任务使用LoadHandler.OnLoadEnd或OnLoadingStateChange之类的事件或其他事件。