• 使用wxPython WebView浏览器版本问题


    使用CodeMirror和wxPyhton的WebView创建嵌入客户端的本地代码编辑工具。

    版本为wxPython 3.0,CodeMirror 支持的浏览器IE8或以上。

    wxPython提供了HtmlWindow,不过HtmlWindow不是一个完全的渲染引擎,没有办法处理css和javascript。这里是用WebView来进行渲染,在Windows上使用Trident Engine,就是IE的内核。使用时调用的是本地安装的IE,通过当前的WebBrowser控件提供,默认是模拟IE7,通过注册表可以进行修改,看这里

    原先在默认的IE7中Tab键有问题,我以为是Tab键发生冲突,后面经过折腾发现了浏览器版本过低,js的解释有问题,终于问题得以解决。

    下面是在windows下python修改默认IE版本为IE11,使用_winreg进行注册表的修改,修改完成后,删除修改过的键值

    #coding=utf-8
    import _winreg, sys 
    
    #更改系统默认编码
    reload(sys)   
    sys.setdefaultencoding('utf8')
    
    # 这里需要打开所有权限
    key = _winreg.OpenKey(_winreg.HKEY_CURRENT_USER, 
        r"SOFTWAREMicrosoftInternet ExplorerMainFeatureControlFEATURE_BROWSER_EMULATION", 0, _winreg.KEY_ALL_ACCESS)
    try:
        # 设置注册表python.exe 值为 11000(IE11)
        _winreg.SetValueEx(key, 'python.exe', 0, _winreg.REG_DWORD, 0x00002af8)
    except:
        # 设置出现错误
        print('error in set value!')
    
    # 用完取消注册表设置
    _winreg.DeleteValue(key, 'python.exe')
    # 关闭打开的注册表
    _winreg.CloseKey(key)

    完整的一个sample放入wxPython中, 其中a.html是在本地导入的需要渲染的html文件:

    import wx, wx.html2, os, _winreg
    
    class MyBrowser(wx.Frame): 
        def __init__(self, *args, **kwds): 
            wx.Frame.__init__(self, None, -1, "My Frame", size=(300, 300))
            # 这里需要打开所有权限
            self.key = _winreg.OpenKey(_winreg.HKEY_CURRENT_USER, 
                  r"SOFTWAREMicrosoftInternet ExplorerMainFeatureControlFEATURE_BROWSER_EMULATION", 0, _winreg.KEY_ALL_ACCESS)
            try:
                # 设置注册表python.exe 值为 11000(IE11)
                _winreg.SetValueEx(self.key, 'python.exe', 0, _winreg.REG_DWORD, 0x00002af8)
            except:
                # 设置出现错误
                print('error in set value!')
            self.browser = wx.html2.WebView.New(self, style=0)
            self.Bind(wx.EVT_CLOSE, self.OnClose)
            
                             
        def OnClose(self, evt):
            print('close')
            # 用完取消注册表设置
            _winreg.DeleteValue(self.key, 'python.exe')
            # 关闭打开的注册表
            _winreg.CloseKey(self.key)
            evt.Skip()
    
    if __name__ == '__main__': 
      app = wx.App() 
      frame = MyBrowser()
      frame.browser.LoadURL(os.path.realpath("a.html")) 
      frame.Show() 
      app.MainLoop()
  • 相关阅读:
    jfinal 导出excle
    SpringBoot添加多数据源mysql和oracle
    Centos6.8搭建Git服务(git版本可选)(转)
    阿里云服务器搭建java环境(jdk+tomcat+oracle11g)
    Oracle 迁移数据库到 mysql
    mysql 迁移数据库到 oracle (sql注意问题)
    nginx学习之——虚拟主机配置
    mongodb 学习之——mongod --help 中文解释
    win 7 MongoDB 下载安装
    nginx学习之——信号控制和配置
  • 原文地址:https://www.cnblogs.com/tiny656/p/3855035.html
Copyright © 2020-2023  润新知