2012-04-27 20 views
10

ben wxPython (wxAUI) kullanılarak küçük bir raporlama uygulaması yazıyorum. Verilerimi bir Web Görünümü 'widget'ında görüntülenecek şekilde HTML olarak sunmak istiyorum. G/görüntülemek bir WebView widget'ı bir HTML dize işlemek için nasıl gösterecek bir örnek 'merhaba dünya' pasajı arıyorum - ancak tek örnek bulamadığı - ve WebView Widget iyi belgelenmiş olması gibi görünmüyor.wxPython WebView örnek

Birisi nasıl bir HTML dizesini oluşturmak için WebView widget'ı kullanmak gösteriyor ki burada kısa bir parçacık yayınlamak, böyle bir örnek için bir bağlantı sağlamak veya (daha iyisi) misiniz?

# 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

Bu eski bir soru, ama cevabım bir cevap olarak işaretlenmiş eğer iyi olurdu. – RufusVS

cevap

19

Bu benim için çalışıyor basit bir örnektir.

wxpython'un en son sürümünü çalıştırdığınızdan emin olun. ,

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.

Ama sonra daha da cevabını araştırdı: (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

Snippet için teşekkürler. 'Html2' adında bir modül: Ben olsa çalıştırmayı denediğinizde, aşağıdaki ImportError olsun. Ben Python v 2.6.5 ve wx sürümü 2.8.12.1 (gtk2-unicode) çalıştırıyorum –

+3

Sen wxPython en son sürümü gerekir. "Sabit" sürümünü kullanıyorsunuz, ancak bu işlev "geliştirme sürümü" ne ihtiyacınız olacak kadar yeni. Burada "Geliştirme sürümü" altında bulabilirsiniz: http://www.wxpython.org/download.php – patchie

+0

Tarayıcı neden tüm pencereyi kaplıyor? – User

4

İlk iki girdileri okuduktan sonra bu konuya yayınlanan ve benim sonrası ben gibi birşeyler söyledi Buradaki mesajları aldım ve asıl soruya gerçek cevabı verdim: Bir dizeden nasıl görüntüleyebilirim ?:

Eğer html dizisi atamalarını t'ye kopyalarsanız o kod örneği, ancak çizgiyi değiştirin:

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

ile:

dialog.browser.SetPage(html_string,"") 

şey ((yerine) url dizesinden görüntülendiği html sayfası) istendiği gibi çalışmıyor

Paylaşma ve tadını çıkarın gerekir !