使用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"SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_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"SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_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()

使用wxPython WebView浏览器版本问题,布布扣,bubuko.com

时间: 2025-01-07 02:58:31

使用wxPython WebView浏览器版本问题的相关文章

WebGL 支持检测与已支持浏览器版本汇总

太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 是否我的浏览器支持 WebGL http://caniuse.com 在页面搜索 webgl,找到  WebGL - 3D Canvas grap

jquery判断浏览器版本插件,jquery-browser.js

一.jquery判断浏览器版本插件,jquery-browser.js jquery 1.9 之后已经删除判断浏览器版本的方法: $.browser.msie $.browser.version 原因是: 注意:通过user agent字符串来检测浏览器不是一个好主意,在1.9中将完全移除该方法,不过你可以使用jQuery Migrate(迁移)插件.或者你可以试试Modernizr. 但如果想用怎么办呢? 二.解决方法: 复制下面的代码,保存为jquery-browser.js,在jquery

[JavaCore] 微信手机浏览器版本判断

公司要做微支付,微信浏览器版本要大于5 package com.garinzhang.web.weixin; import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.math.NumberUtils; /** *类说明 *@author Garin Zhang */ public class WchatUtil { public static final String WEI_XIN_BROWSER =

判断浏览器版本

jQuery 从 1.9 版开始,移除了 $.browser 和 $.browser.version , 取而代之的是 $.support . 在更新的 2.0 版本中,将不再支持 IE 6/7/8. 以后,如果用户需要支持 IE 6/7/8,只能使用 jQuery 1.9. 如果要全面支持 IE,并混合使用 jQuery 1.9 和 2.0, 官方的解决方案是: ? 1 2 3 4 5 6 <!--[if lt IE 9]>     <script src='jquery-1.9.0.

自动检测ie低版本,并显示升级浏览器的自定义页面,当用f12再把浏览器版本提高的时候,又会自动显示正常的页面。

代码: <!--[if lte IE 9 ]> <div class=""> 这里面可以添加自己定义的内容 </div> <script type="text/javascript"> 这里也可以添加自定义的js alert("浏览器版本过低"); window.stop ? window.stop() : document.execCommand("Stop"); </s

用条件注释判断浏览器版本解决页面兼容问题

在IE8.IE9上可能好好的,当我们在IE6.IE7或者是其他的浏览器上再浏览这些页面时,可能会发现我们的页面已经面目全非了,那么如何解决兼容问题呢,本文就为大家一一道来对于浏览器兼容问题,我们应该碰到很多了,在平时写一些页面时,在IE8.IE9上可能好好的,当我们在IE6.IE7或者是其他的浏览器上再浏览这些页面时,可能会发现我们的页面已经面目全非了,作为一名前端开发人员,这是最让人发疯的问题了,那么我们该怎么解决这些问题呢? 首先,我们写的页面在不同的浏览器上之所以会出现表现不同的问题,是因

用条件注释判断浏览器版本,解决兼容问题

对于浏览器兼容问题,我们应该碰到很多了,在平时写一些页面时,在IE8.IE9上可能好好的,当我们在IE6.IE7或者是其他的浏览器上再浏览这些页面时,可能会发现我们的页面已经面目全非了,作为一名前端开发人员,这是最让人发疯的问题了,那么我们该怎么解决这些问题呢? 首先,我们写的页面在不同的浏览器上之所以会出现表现不同的问题,是因为不同的浏览器在解析页面时,他们所遵循的规则并不是完全相同的.比如IE,不同的版本解析都不同,何况是不同的浏览器厂商,不同的内核呢.但是我们在遇到兼容性问题时,应该首先检

javascript判断手机浏览器版本信息

<script type="text/javascript"> /* * 智能机浏览器版本信息: * */ var browser={ versions:function(){ var u = navigator.userAgent, app = navigator.appVersion; return {//移动终端浏览器版本信息 trident: u.indexOf('Trident') > -1, //IE内核 presto: u.indexOf('Presto

js 获取浏览器版本

1.在web开发中,会经常让你判断当前使用的是那个浏览器及浏览器的那个版本,根据浏览器版本来调整CSS的样式, 使在web界面在各个浏览器展现达到最佳的效果,下面是获取当前浏览器的代码: getBrowserVersion:function(){ var agent = navigator.userAgent.toLowerCase(); var arr=[]; var Browser=""; var Bversion=""; var verinNum="