Форум сайта python.su
Привет. Пытаюсь показывать html с помощью wxHtmlWindow. Когда подсовываю ему html, который содержит только картинки на диске, все работает нормально. Как только даю ему html с картинками, которые надо скачать из нета, питон начинает грузить проц на 100%. Та же проблема, если попытаться загрузить саму страницу из инета.
Вот пример который нашел в нете. Он у меня тоже виснет:
import wx import wx.html class MyHtmlFrame(wx.Frame): def __init__(self, parent, title): wx.Frame.__init__(self, parent, -1, title, size=(600,400)) self.CreateStatusBar() html = wx.html.HtmlWindow(self) if "gtk2" in wx.PlatformInfo: html.SetStandardFonts() html.SetRelatedFrame(self, self.GetTitle() + " -- %s") html.SetRelatedStatusBar(0) html.LoadPage("http://wxwidgets.org/manuals/2.5.4/wx_wxbutton.html") app = wx.PySimpleApp() frm = MyHtmlFrame(None, "Simple HTML Browser") frm.Show() app.MainLoop()
Офлайн
Jenyay
виснет наверно потому, что LoadPage вызывается до вызова MainLoop
попробуй вызвать LoadPage на событие в меню например. Я вот так писАл:
# -*- coding:cp1251 -*- import wx import wx.html image_dir = 'images/' ID_LOAD_PAGE = wx.NewId() ID_EXIT = wx.NewId() MENU_CONTROLS = { 'Файл':( [ID_LOAD_PAGE, True, '', 'Загрузить', 'Загрузить Google', 'Load'], [None, False, '', '', '', ''], [ID_EXIT, True, '', 'Выход', 'Закрытие приложения', 'OnClose'], ), } class MyHtmlFrame(wx.Frame): def __init__(self, parent, title): wx.Frame.__init__(self, parent, -1, title, size=(600,400)) self.menubar = wx.MenuBar() self.CreateMenu() self.SetMenuBar(self.menubar) self.CreateStatusBar() sizer = wx.BoxSizer() self.html = wx.html.HtmlWindow(self) sizer.Add(self.html, 1, wx.EXPAND|wx.ALL) self.SetSizer(sizer) if "gtk2" in wx.PlatformInfo: self.html.SetStandardFonts() self.html.SetRelatedFrame(self, self.GetTitle() + " -- %s") self.html.SetRelatedStatusBar(0) def Load(self, evt): self.html.LoadPage("http://www.google.ru") def CreateMenu(self): for name in MENU_CONTROLS.keys(): menu = wx.Menu() for id, bool, ico, short, long, func in MENU_CONTROLS[name]: if id == None: menu.AppendSeparator() continue item = wx.MenuItem(menu, id, short, long ) if ico != '': bmp = wx.Image(image_dir+ico,wx.BITMAP_TYPE_ICO).ConvertToBitmap() item.SetBitmap(bmp) item.Enable(bool) menu.AppendItem(item) exec("self.Bind(wx.EVT_MENU, self."+func+", item)") self.menubar.Append(menu, name) def OnClose(self, evt): self.Destroy() app = wx.PySimpleApp() frm = MyHtmlFrame(None, "Simple HTML Browser") frm.Show() app.MainLoop()
Офлайн
hellslade
Спасибо, действительно из-за этого. В обработчиках событий все работает нормально.
Офлайн