2012-04-27 62 views
10

我正在使用wxPython(wxAUI)編寫一個小型報表應用程序。我想將我的數據呈現爲HTML,以顯示在WebView的「小部件」中。我正在尋找一個示例「hello world」片段,它將顯示如何在WebView小部件中顯示/呈現HTML字符串 - 但一直未能找到一個示例 - 並且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 2018-02-06 23:36:32

回答

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) – 2012-06-03 10:18:02

+3

您需要最新版本的wxPython。您正在使用「穩定」版本,但此功能非常新,您需要「開發版本」。 你可以在這裏的「開發版本」下找到它:http://www.wxpython.org/download.php – patchie 2012-06-04 21:19:06

+0

爲什麼瀏覽器佔用了整個窗口? – User 2014-01-08 19:13:47

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))

分享和欣賞!