wxpython网站_wxpython 实现浏览器

本文介绍了如何使用wxPython的WebView模块创建一个简单的网页浏览器。相比qt的QwebEngineView,wxPython的WebView在处理Flash时更方便。文章还提到了在Windows下遇到的浏览器版本问题,特别是IE7的JavaScript解释问题,并提供了通过修改注册表将默认IE版本提升到IE11的Python代码示例。最后,展示了完整的一个wxPython应用示例,用于加载本地HTML文件。
摘要由CSDN通过智能技术生成

简洁示例:

import wx

from wx.html2 import WebView

class MyHtmlFrame(wx.Frame):

def __init__(self, parent, title):

wx.Frame.__init__(self, parent, -1, title, size=(1024, 768))

web_view =WebView.New(self)

web_view.LoadURL("https://www.ai8py.com")

app = wx.App()

frm = MyHtmlFrame(None, "AI吧python")

frm.Show()

app.MainLoop()

相比于qt中的QwebEngineView 的更加方便,QwebEngineView使用的是chrome内核,在使用flash时不友好

使用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()

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值