Найти - Пользователи
Полная версия: Проблема с cefpython.CreateBrowserSync
Начало » Python для новичков » Проблема с cefpython.CreateBrowserSync
1
shadrin.igor
Здравствуйте, меня уже много дней мучает проблема с cefpython.CreateBrowserSync.
Задача следующая, необходимо 10 раз с промежутком в 20 секунд запускать браузер с новой страницей ( для упрощения в примере ниже я сделал просмотр одной и тойже страницы ). Когда я для теста работал без “threading”, браузер открывается нормально. Но когда я добавил threading.Timer код стал выдавать ошибку “cefpython.CreateBrowserSync() may only be called on the UI thread”. Я погуглил, там пишут что CreateBrowserSync можно запускать только в потоке пользовательского интерфейса, а что-то не как не могу сообразить как решить эту проблему, помогите плиз.

Мой файл имеет следующий код
import os
import wx
import cefpython3.wx.chromectrl as chrome
import threading

class MainFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, parent=None, id=wx.ID_ANY,
title='cefwx example1', size=(600,400))

def openBrowser(self):
self.cefWindow = chrome.ChromeWindow(self,
url="http://ya.ru")

sizer = wx.BoxSizer()
sizer.Add(self.cefWindow, 1, wx.EXPAND, 0)
self.SetSizer(sizer)


if __name__ == '__main__':
chrome.Initialize({})

app = wx.PySimpleApp()
m = MainFrame()
m.Show()

for i in range(10):
t = threading.Timer(20.0, m.openBrowser)
t.start()

app.MainLoop()

del app
chrome.Shutdown()
Singularity
shadrin.igor
Я не давно начал заниматься Python, может я чего-то не то написал, поясни пожалуйста
Singularity
shadrin.igor
сделать таймер, а не потоки.
Вот єто попробуй
http://stackoverflow.com/a/6944224/1479634
shadrin.igor
Спасибо Singularity,
Заработало
Czarlii
В CEF Python 31 использования:
cefpython.PostTask(TID_UI, ….)

Смотреть:
https://code.google.com/p/cefpython/wiki/cefpython

void PostTask(int threadId, object func [,args..])

Post a task for execution on the thread associated with this task runner. Execution will occur asynchronously. Only Browser process threads are allowed, see IsThread() for a list of available threads and their descriptions.
An example usage is in the wxpython.py example on Windows, in implementation of LifespanHandler.OnBeforePopup.
shadrin.igor
Спасибо, но я использую 27, поэтом вариант от Singularity подошел лучше.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB