Форум сайта python.su
-1
Здравствуйте, меня уже много дней мучает проблема с 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()
Отредактировано shadrin.igor (Сен. 5, 2014 19:08:15)
Прикреплённый файлы:
21.png (96,7 KБ)
Офлайн
75
Офлайн
-1
Я не давно начал заниматься Python, может я чего-то не то написал, поясни пожалуйста
Офлайн
75
shadrin.igor
сделать таймер, а не потоки.
Вот єто попробуй
http://stackoverflow.com/a/6944224/1479634
Офлайн
-1
Спасибо Singularity,
Заработало
Отредактировано shadrin.igor (Сен. 22, 2014 11:43:48)
Офлайн
0
В 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.
Офлайн
-1
Спасибо, но я использую 27, поэтом вариант от Singularity подошел лучше.
Отредактировано shadrin.igor (Сен. 22, 2014 11:42:36)
Офлайн