2012-04-27 2 views
10

Я пишу небольшое приложение для отчетов, использующее wxPython (wxAUI). Я хочу, чтобы мои данные отображались как HTML, отображаемые в виде виджета WebView. Я ищу образец «привет мир», который покажет, как отображать/отображать строку HTML в виджете WebView, но не смог найти ни одного примера, - и виджет WebView, похоже, не документирован.wxPython Пример WebView

Не могли бы вы предоставить ссылку на такой пример или (еще лучше), разместите здесь короткий фрагмент кода, который показывает, как использовать виджет WebView для визуализации строки HTML?

# sample html string to display in WebView widget 
html_string = """ 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html> 
    <head> 
     <title>Hello World!</title> 
     <script type="text/javascript" src="jquery.js"></script> 
     <style type="text/css" src="main.css"></style> 
    </head> 
    <body> 
     <span id="foo">The quick brown fox jumped over the lazy dog</span> 
     <script type="text/javascript"> 
     $(document.ready(function(){ 
      $("span#foo").click(function(){ alert('I was clicked!'); }); 
     }); 
     </script> 
    </body> 
</html> 
""" 
+0

Это старый вопрос, но было бы неплохо, если бы мой ответ был отмечен как ответ. – RufusVS

ответ

19

Это простой пример, который работает на меня.

Убедитесь, что вы используете последние версию wxpython. (WxPython 2,9)

import wx 
import wx.html2 

class MyBrowser(wx.Dialog): 
    def __init__(self, *args, **kwds): 
    wx.Dialog.__init__(self, *args, **kwds) 
    sizer = wx.BoxSizer(wx.VERTICAL) 
    self.browser = wx.html2.WebView.New(self) 
    sizer.Add(self.browser, 1, wx.EXPAND, 10) 
    self.SetSizer(sizer) 
    self.SetSize((700, 700)) 

if __name__ == '__main__': 
    app = wx.App() 
    dialog = MyBrowser(None, -1) 
    dialog.browser.LoadURL("http://www.google.com") 
    dialog.Show() 
    app.MainLoop() 
+0

Спасибо за фрагмент. Когда я пытаюсь запустить его, я получаю следующий ImportError: 'Нет модуля с именем html2'. Я запускаю Python v 2.6.5 и wx версию 2.8.12.1 (gtk2-unicode) –

+3

Вам нужна последняя версия wxPython. Вы используете «стабильную» версию, но эта функция настолько новая, что вам нужна «версия для разработки». Вы можете найти его здесь, в разделе «Разработка релиза»: http://www.wxpython.org/download.php – patchie

+0

Почему браузер занимает все окно? – User

4

Я отвечал на эту тему после прочтения первых двух записей, и в моем посте я сказал что-то вроде:

There is an answer here, but it doesn't answer the question. The question was: How do I display an HTML file in a string in a browser window? The only answer opens the browser window, but gets data from a url and doesn't use the string contents.

Но я исследовал ответ дальше, Я взял проводки здесь и придумал фактический ответ на исходный вопрос, который был: Как отобразить из строки ?:

Если вы скопируете присвоение строки html в t он пример кода, но заменить строку:

dialog.browser.LoadURL("http://www.google.com") 

с:

dialog.browser.SetPage(html_string,"") 

Все должно работать в соответствии с пожеланиями (отображаются страницы HTML из строки (вместо URL))

Делите и наслаждайтесь !

Смежные вопросы