17

wxPython (wxAUI) を使用して小さなレポート アプリを作成しています。データを HTML としてレンダリングし、WebView の「ウィジェット」に表示したいと考えています。WebViewウィジェットでHTML文字列を表示/レンダリングする方法を示すサンプルの「hello world」スニペットを探していますが、単一の例を見つけることができませんでした.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>
"""
4

2 に答える 2

28

これは私にとってうまくいく簡単な例です。

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() 
于 2012-06-02T22:44:05.473 に答える
9

最初の 2 つのエントリを読んだ後、このスレッドに投稿しました。

ここに答えがありますが、質問には答えません。問題は、HTML ファイルを文字列としてブラウザ ウィンドウに表示するにはどうすればよいかということでした。唯一の答えはブラウザー ウィンドウを開きますが、URL からデータを取得し、文字列の内容を使用しません。

しかし、その後、回答をさらに調査し、投稿をここに取り、元の質問に対する実際の回答を思いつきました: 文字列から表示するにはどうすればよいですか?:

html 文字列の割り当てをコード サンプルにコピーして、次の行を置き換えた場合:

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

と:

  dialog.browser.SetPage(html_string,"")

すべてが希望どおりに機能するはずです((URLの代わりに)文字列からhtmlページを表示します)

共有してお楽しみください!

于 2014-04-12T05:47:31.293 に答える