将https页面加载到wx.html.HTMLWindow中

时间:2014-04-30 15:37:06

标签: python ssl https wxwidgets wxhtmlwindow

我正在尝试将https网址加载到HTMLWindow

import wx
import wx.html

class MyHtmlFrame(wx.Frame):
    def __init__(self, parent, title):
        wx.Frame.__init__(self, parent, -1, title, size=(600,400))
        html = wx.html.HtmlWindow(self)
        if "gtk2" in wx.PlatformInfo:
            html.SetStandardFonts()

        wx.CallAfter(html.LoadPage, "https://www.google.com")#Fails to load page 
        #but the following works ...
        #wx.CallAfter(html.LoadPage, "http://www.google.com")#Works Fine!


app = wx.PySimpleApp()
frm = MyHtmlFrame(None, "Simple HTML Browser")
frm.Show()
app.MainLoop()

有没有办法在HTMLWindow中加载一个ssl页面(或其他一些用于呈现ssl页面的wxWindow方式)?

我正在使用wx 2.8.10,目前升级不是真正的选项

2 个答案:

答案 0 :(得分:1)

您可以使用urllib2.urlopen之类的现有方法下载文件,并将文件保存到文件系统,然后将该文件名传递给HtmlWindow的LoadPage方法。

现有方法的示例包含在以下StackOverflow问题中,HTTPS connection Python How do I download a file over HTTP using Python?

其他更复杂的选项涉及使用wxIE和wxMozilla,一旦下载或编译了Python绑定。

答案 1 :(得分:1)

我真的很想把我的赏金给予某人,但是这里真的是lmjohns带给我的解决方案......有点......解决方案是使用wx IEWin

import wx
import wx.lib.iewin as iewin
class MyBrowser(wx.Dialog):
  def __init__(self, *args, **kwds):
    wx.Dialog.__init__(self, *args, **kwds)
    sizer = wx.BoxSizer(wx.VERTICAL)
    self.browser =  iewin.IEHtmlWindow(self)
    sizer.Add(self.browser, 1, wx.EXPAND, 10)
    self.SetSizer(sizer)
    self.SetSize((850, 730))
  def load(self,uri):
      self.browser.Navigate(uri)

if __name__ == '__main__':
  app = wx.App()
  dialog = MyBrowser(None, -1)
  dialog.browser.Navigate("https://www.google.com")
  dialog.Show()
  app.MainLoop()