首页 > 代码库 > 使用wxPython WebView浏览器版本问题
使用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-8import _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, _winregclass 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()
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。