Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 5, 2014 19:05:43

shadrin.igor
Зарегистрирован: 2014-08-19
Сообщения: 10
Репутация: +  -1  -
Профиль   Отправить e-mail  

Проблема с cefpython.CreateBrowserSync

Здравствуйте, меня уже много дней мучает проблема с 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)

Прикреплённый файлы:
attachment 21.png (96,7 KБ)

Офлайн

#2 Сен. 5, 2014 19:44:21

Singularity
Зарегистрирован: 2011-07-28
Сообщения: 1387
Репутация: +  75  -
Профиль   Отправить e-mail  

Проблема с cefpython.CreateBrowserSync

Офлайн

#3 Сен. 5, 2014 19:46:52

shadrin.igor
Зарегистрирован: 2014-08-19
Сообщения: 10
Репутация: +  -1  -
Профиль   Отправить e-mail  

Проблема с cefpython.CreateBrowserSync

Я не давно начал заниматься Python, может я чего-то не то написал, поясни пожалуйста

Офлайн

#4 Сен. 5, 2014 20:09:46

Singularity
Зарегистрирован: 2011-07-28
Сообщения: 1387
Репутация: +  75  -
Профиль   Отправить e-mail  

Проблема с cefpython.CreateBrowserSync

shadrin.igor
сделать таймер, а не потоки.
Вот єто попробуй
http://stackoverflow.com/a/6944224/1479634

Офлайн

#5 Сен. 5, 2014 21:17:23

shadrin.igor
Зарегистрирован: 2014-08-19
Сообщения: 10
Репутация: +  -1  -
Профиль   Отправить e-mail  

Проблема с cefpython.CreateBrowserSync

Спасибо Singularity,
Заработало

Отредактировано shadrin.igor (Сен. 22, 2014 11:43:48)

Офлайн

#6 Сен. 6, 2014 10:17:33

Czarlii
Зарегистрирован: 2014-09-06
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с cefpython.CreateBrowserSync

В 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.

Офлайн

#7 Сен. 22, 2014 11:42:22

shadrin.igor
Зарегистрирован: 2014-08-19
Сообщения: 10
Репутация: +  -1  -
Профиль   Отправить e-mail  

Проблема с cefpython.CreateBrowserSync

Спасибо, но я использую 27, поэтом вариант от Singularity подошел лучше.

Отредактировано shadrin.igor (Сен. 22, 2014 11:42:36)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version