【问题标题】:wxPython WebView examplewxPython WebView 示例
【发布时间】:2012-05-08 16:41:38
【问题描述】:

我正在使用 wxPython (wxAUI) 编写一个小型报告应用程序。我想将我的数据呈现为 HTML,以显示在 WebView 'widget' 中。我正在寻找一个示例“hello world”sn-p,它将显示如何在 WebView 小部件中显示/呈现 HTML 字符串 - 但无法找到单个示例 - 并且 WebView 小部件似乎没有很好的文档记录.

有人可以提供此类示例的链接吗,或者(更好),在此处发布一个简短的 sn-p,展示如何使用 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>
"""

【问题讨论】:

  • 这是一个老问题,但如果我的答案被标记为答案就好了。

标签: python webview wxpython


【解决方案1】:

我在阅读了前两篇文章后发到了这个帖子,在我的帖子中我说了类似的话:

这里有答案,但没有回答问题。问题是:如何在浏览器的字符串中显示 HTML 文件 窗户?唯一的答案打开浏览器 窗口,但从 url 获取数据并且不使用字符串内容。

但后来我进一步研究了答案,我在这里发布了帖子并提出了原始问题的实际答案,即:如何从字符串中显示?:

如果将 html 字符串赋值复制到代码示例中,但替换该行:

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

与:

  dialog.browser.SetPage(html_string,"")

一切都应该按预期工作(从字符串(而不是 url)显示 html 页面)

分享和享受!

【讨论】:

    【解决方案2】:

    这是一个适合我的简单示例。

    确保您运行的是 最新 版本的 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() 
    

    【讨论】:

    • 感谢 sn-p。但是,当我尝试运行它时,我收到以下 ImportError:No module named html2。我正在运行 Python v 2.6.5 和 wx 版本 2.8.12.1 (gtk2-unicode)
    • 您需要最新版本的 wxPython。您使用的是“稳定”版本,但此功能太新,您需要“开发版本”。您可以在此处的“开发版本”下找到它:wxpython.org/download.php
    • 为什么浏览器会占满整个窗口?
    • 致任何试图在 OSX 下运行此示例的人:您将收到 google.com 引用的加载失败。 OSX 默认不允许 http 引用。您可以将其更改为 https://... ,但我还发现了以下我不理解但修复它的更改: import AppKit..... AppKit.NSBundle.mainBundle().infoDictionary()[' NSAppTransportSecurity'] = dict(NSAllowsArbitraryLoads = True)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-04
    • 1970-01-01
    相关资源
    最近更新 更多