博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用wxPython WebView浏览器版本问题
阅读量:4614 次
发布时间:2019-06-09

本文共 2060 字,大约阅读时间需要 6 分钟。

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

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

wxPython提供了HtmlWindow,不过HtmlWindow不是一个完全的渲染引擎,没有办法处理css和javascript。这里是用WebView来进行渲染,在Windows上使用Trident Engine,就是IE的内核。使用时调用的是本地安装的IE,通过当前的控件提供,默认是模拟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()

转载于:https://www.cnblogs.com/tiny656/p/3855035.html

你可能感兴趣的文章
oc75--不可变字典NSDictionary
查看>>
MySql安装与使用图文教程
查看>>
vue 数据传递的方法
查看>>
MFC 导入EXCEL到数据库
查看>>
[转载]Java同步、异步相关知识点
查看>>
洛谷 P2921 [USACO08DEC]在农场万圣节Trick or Treat on the Farm
查看>>
DosBox 的 DOSBOX.CONF 的详细配置说
查看>>
[HNOI2019]白兔之舞(矩阵快速幂+单位根反演)
查看>>
Oracle 表分组 group by和模糊查询like
查看>>
[译].NET 4 中玩耍内存映射文件
查看>>
生成静态页html
查看>>
CS0016: 未能写入输出文件“c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\...
查看>>
Zabbix安装部署(本文为转载)
查看>>
redis 五大类型 、持久化方式以及主从(哨兵模式)
查看>>
[SCOI2005]骑士精神
查看>>
js通用对象数组冒牌排序
查看>>
Linux下启动mongodb(后台方式)
查看>>
opencv 播放视频
查看>>
Spring+redis
查看>>
第二次作业
查看>>