2012-04-27 22 views
10

Estoy escribiendo una pequeña aplicación de informes usando wxPython (wxAUI). Quiero presentar mis datos como HTML para que se muestren en un 'widget' de WebView. Estoy buscando un fragmento de muestra 'hello world' que muestre cómo mostrar/renderizar una cadena HTML en un widget WebView, pero no he podido encontrar un solo ejemplo, y el widget WebView no parece estar bien documentado.Ejemplo de wxPython WebView

¿Podría alguien proporcionar un enlace a dicho ejemplo o (mejor aún), publicar un breve fragmento aquí que muestra cómo usar el widget WebView para representar una cadena 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

Es una vieja pregunta, pero estaría bien si mi respuesta estuviera marcada como respuesta. – RufusVS

Respuesta

19

Este es un ejemplo simple que funciona para mí.

Asegúrese de ejecutar la última versión de 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

Gracias por el fragmento. Cuando intento ejecutarlo, obtengo el siguiente ImportError: 'Ningún módulo llamado html2'. Estoy ejecutando Python v 2.6.5 y wx versión 2.8.12.1 (gtk2-unicode) –

+3

Necesita la última versión de wxPython. Está utilizando la versión "estable", pero esta función es tan nueva que necesita la "versión de desarrollo". Puede encontrarlo aquí, en "Desarrollo de versión": http://www.wxpython.org/download.php – patchie

+0

¿Por qué el navegador ocupa toda la ventana? – User

4

he publicado a este tema después de leer las dos primeras entradas, y en mi post que decía algo así como:

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.

Pero entonces he investigado la respuesta aún más, Tomé las publicaciones aquí y se me ocurrió la respuesta real a la pregunta original, que era: ¿Cómo se muestra desde una cadena ?:

Si copia la asignación html de cadenas en t él ejemplo de código, pero reemplace la línea:

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

con:

dialog.browser.SetPage(html_string,"") 

todo debería funcionar como desee (página HTML que muestra de una cadena (en lugar de url))

Compartir y disfrutar !