供初学者使用的 wxHTML

微信小程序实战 (WXML:小程序版HTML) 使用 name 属性,作为模板的名字。复制代码官文事件是视图层到逻辑层的通讯方式。事件可以将用户的行为反馈到逻辑层进行处理。事件可以绑定在组件上,当达到触发事件,就会执行逻辑层中对应的事件处理函数。事件对象可以携带额外信息,如 id, dataset, touches。复制代码。 阅读详情

原文在 IBM developerworks 上在链接已经无法打开。

http://www.ibm.com/developerworks/library/l-wxpython/index.html?S_TACT=105AGX52&S_CMP=cn-a-l

文章上的演示代码,可能太古老而无法在我的电脑上运行。经过修改,可在 wxPython 2.8.12.1 for Pyhton2.6 上运行。

现在把修改过的演示代码贴出来,供给其它有需要的。

通常,大多数应用程序通过保持 HTML 简单来解决大多数浏览器问题 ― 或者说,根据最低共同特性来编写。然而,即便如此,也仍然存在字体和布局的问题,发行新浏览器和升级现有浏览器时,也免不了测试应用程序的痛苦。替代方案 ― 只支持一种浏览器 ― 通常不是一种用户友好的解决方案。

明显的解决方案是在应用程序中嵌入自己的表现 HTML 的窗口构件。当然,从头开始编写这样的窗口构件工作量很大,因此,求助于预先封装的解决方案好象是合理的。

商界有许多选择及几个开放源码软件包(参阅本文后面的参考资料)。本文将向您显示如何以 Python 作为绑定的语言选择(也支持 C++、Perl 和其它语言)使用作为 wxWindows 软件包一部分分发的wxHtml 窗口构件。

虽 然没有任何 wxPython 经验而熟谙 Python 的开发人员应该能够从头开始,但本文还是假定您具有基本的 wxPython 知识。在本文中,我们将创建一个独立的浏览器应用程序,同时,保持体系结构足够简单以致将浏览器功能迁移到现有的应用程序中是一项简单的任务。

世界上最基本的浏览器

第一步是组装支持使用 wxHtml 窗口构件的应用程序所必需的最少代码。下列代码实现用wxHtml 窗口构件作为其主窗口内容的基本 wxPython 应用程序。

import wx
from wx.html import *
import os,sys

class exHtmlWindow(HtmlWindow):
	def __init__(self, parent, id, frame):
		HtmlWindow.__init__(self,parent,id)

class exHtmlPanel(wx.Panel):
	def __init__(self, parent, id, frame):
		wx.Panel.__init__(self, parent, -1)
		self.frame = frame
		self.cwd = os.path.split(sys.argv[0])[0]
		if not self.cwd:
			self.cwd = os.getcwd
		self.html = exHtmlWindow(self, -1, self.frame)
		self.html.SetRelatedFrame(self.frame, "%s")
		self.html.SetRelatedStatusBar(0)
		
		self.box = wx.BoxSizer(wx.VERTICAL)
		self.box.Add(self.html, 1, wx.GROW)
		subbox = wx.BoxSizer(wx.HORIZONTAL)
		btn = wx.Button(self, 1202, "Load File")
		wx.EVT_BUTTON(self, 1202, self.OnLoadFile)
		subbox.Add(btn, 1, wx.GROW | wx.ALL, 2)
		btn = wx.Button(self, 1203, "Load Page")
		wx.EVT_BUTTON(self, 1203, self.OnLoadPage)
		subbox.Add(btn, 1, wx.GROW | wx.ALL, 2)
		btn = wx.Button(self, 1204, "Back")
		wx.EVT_BUTTON(self, 1204, self.OnBack)
		subbox.Add(btn, 1, wx.GROW | wx.ALL, 2)
		btn = wx.Button(self, 1205, "Forward")
		wx.EVT_BUTTON(self, 1205, self.OnForward)
		subbox.Add(btn, 1, wx.GROW | wx.ALL, 2)
		self.box.Add(subbox, 0, wx.GROW)
		self.SetSizer(self.box)
		self.SetAutoLayout(True)
	def OnLoadPage(self, event):
		dlg = wx.TextEntryDialog(self, 'Location:')
		if dlg.ShowModal() == wx.ID_OK:
			self.destination = dlg.GetValue()
		dlg.Destroy()
		self.html.LoadPage(self.destination)
	def OnLoadFile(self, event):
		dlg = wx.FileDialog(self, wildcard = '*.htm*', style=wx.OPEN)
		if dlg.ShowModal():
			path = dlg.GetPath()
			self.html.LoadPage(path)
		dlg.Destroy()
	def OnBack(self, event):
		if not self.html.HistoryBack():
			wx.MessageBox("No more items in history!")
	def OnForward(self, event):
		if not self.html.HistoryForward():
			wx.MessageBox("No more items in history!")

class exFrame(wx.Frame):
	def __init__(self, parent, ID, title):
		wx.Frame.__init__(self,parent,ID,title,wx.DefaultPosition,wx.Size(600,750))
		panel = exHtmlPanel(self, -1, self)
		self.CreateStatusBar()
		self.SetStatusText("Default status bar")
		mnu_file = wx.Menu()
		mnu_file.Append(101, "E&xit", "Exit the browser")
		menuBar = wx.MenuBar()
		menuBar.Append(mnu_file, "F&ile")
		self.SetMenuBar(menuBar)
		wx.EVT_MENU(self, 101, self.Exit)
	
	def Exit(self, event):
		self.Close(True)

class exApp(wx.App):
	def OnInit(self):
		wx.InitAllImageHandlers()
		frame = exFrame(None, -1, "Example Browser")
		frame.Show(True)
		self.SetTopWindow(frame)
		return True

app = exApp(0)
app.MainLoop()

现在,基本浏览器的功能应该齐全了。wxPython 的高级特性允许您创建自己的标记,可以通过定制代码来处理这些标记以执行您选择的任何操作。对您自己的可定制嵌入式浏览器的控制为增强的报表生成及联机帮助提供了无限的可能性。


这些代码本身就可以轻易为任意数目的应用程序提供基础,并且 ― 没有理由将您限制在仅仅提供联机帮助上。请自由使用这些类,看看能让它们发生什么有趣的行为。:-)

 

参考资料

  • 您可以参阅本文在 developerWorks 全球站点上的 英文原文.
  • 有关 wxPython 简介,请参阅“ wxPython for newbies”( developerWorks,2001 年 3 月)。

  • 阅读“ Looking through wxWindows”以获取对 wxWindows 体系结构的讨论、多平台文件处理的技巧以及对 wxHTML 的简要介绍(developerWorks,2001 年 2 月)。

  • 在“ Porting MFC applications to Linux”中,Markus Neifer 将 wxWindows 用作向 Linux 移植 Microsoft 基础类(Microsoft Foundation Class)应用程序的简单机制(developerWorks,2002 年 4 月)。

  • 检查 wxPython主页以获取最新源代码和文档。

  • 下载 basic.py,它是本文描述的项目的完整代码。

  • David Beazley 撰写的 Python Essential Reference (New Riders Publishing,2001;ISBN 0735710910)是世界上最好的 Python 语言参考书,您应该拥有一本。

  • NGLayout/Gecko是 Mozilla/Netscape 的 HTML 解析和表现组件,虽然与wxHtml 相比,它更难以扩展,但它本身支持更多的功能(CSS/XML,等等)。

  • developerWorksLinux 专区找到更多 关于 Linux 主题的文章,在 developerWorksWeb 架构专区找到更多 关于 Web 架构主题的文章
关于作者

Nick Bastin 在过去几年里一直使用 Python,大约在去年一直使用 wxPython。他不写文章并且不试图将 UNIX 工具移植到 MacOS X 时,就通过验证(通常是滥用)网络协议实现来在他白天的工作中获得快乐。可以通过nbastin@mac.com和他联系。

使用wxPython嵌入浏览器加载本地HTML文件 在本篇博客中,我们将使用Python的wxPython模块来嵌入一个浏览器,并加载一个本地的HTML文件。这对于需要在Python应用程序中显示Web内容的情况非常有用。我们将使用wx.html2模块提的WebView组件来实现这一功能。在本篇博客中,我们学习了如何使用wxPython模块嵌入浏览器,并加载本地的HTML文件。这使得我们可以方便地在Python应用程序中显示Web内容,为用户提更丰富的交互体验。你可以根据实际需要进一步扩展这个示例,例如添加其他界面元素、自定义浏览器的行为等。 阅读详情

相关推荐

帮助浏览器解析HTMLwxHtml 示例

wxHtmlwxWidgets 框架中的一个 HTML 渲染引擎,它是一个开源的、跨平台的工具,可以用于将 HTML 文本渲染为可视化的文本和图像。在浏览网页时,我们经常遇到需要解析HTML文档的情况,这时候就需要使用相关的工具来帮助我们。除了可以简单地将 HTML 文本渲染为窗口内的可视化内容之外,wxHtml 还支持比较复杂的功能,例如鼠标事件的处理、链接跳转、图片显示等。通过逐步学习和掌握它的使用方法,我们可以为用户提更多的交互操作和更好的用户体验。方法设置了要渲染的 HTML 内容。

. 591

微信小程序wx html,wx-mina-html-view: 微信小程序渲染html

微信小程序渲染html支持的特性:大部分的普通HTML标签(未全部测试),,,,,等表格标签标签转HTML entities七牛图片裁剪自定义插件不支持,,等表单元素.使用方法请参考pages/index目录里的文件.拷贝html-view目录到你的项目.在页面的js/wxml/wxss中, 引入代码:index.js// 引入HtmlParserconst HtmlParser =...

weixin_39701861的博客 434

wxHTML 概述:使用 wxWidgets 实现 HTML 渲染

总的来说,wxHTML 是一个功能强大的库,可以让你轻松地将 HTML 页面渲染到你的应用程序中。如果你想在你的 C++ 应用程序中使用 HTML 渲染,wxWidgets 提了一个灵活而强大的解决方案 - wxHTML。它是一个可扩展、跨平台的库,可以将 HTML 文档渲染为屏幕上的文本、表格和图像。这会创建一个渲染 HTML 页面的窗口,并在其中加载指定 URL 的页面。wxHTML 的语法相对简单,支持大多数标准的 HTML 标记和属性,甚至可以嵌套在 XML 中。现在,每当解析器碰到一个。

HackQuestR的博客 483

帮助测试cpp示例:wxHtml控件详解

wxHtmlwxWidgets中的一个强大的控件,它可以用于显示HTML格式的文本。对于需要在程序中嵌入HTML内容的开发者来说,这是一个非常有用的工具。总之,wxHtml是一个非常强大的控件,可以用于显示和处理HTML内容。在开发过程中,它可以为你提更多的选择和灵活性。接下来,我们需要加载HTML内容。可以从文件中读取内容,也可以从字符串中读取内容。在本例中,我们将内容存储在一个字符串中。通过SetPage方法,我们可以将HTML内容显示在窗口中。以上代码将打印窗口中的HTML内容。

. 513

应用程序浏览器初学者使用wxHTML

每日一贴,今天的内容关键字为应用程序浏览器     原文在 IBM developerworks 上在链接已没法打开。     http://www.ibm.com/developerworks/library/l-wxpython/index.html?S_TACT=105AGX52&S_CMP=cn-a-l     文章上的演示代码,可能太陈旧而没法在我的电脑上运行。经过修改,可...

weixin_33755557的博客 283

wxHtml 示例:展示虚拟文件系统功能

虚拟文件系统(Virtual File System)是一种在内存中模拟文件系统的技术,它允许我们以统一的方式处理来自不同来源的数据,包括文件、网络资源和其他数据源。然后,我们可以使用 wxFileSystemHandler 类来注册一个虚拟文件系统的处理器,以便能够加载和处理来自内存中的数据。通过使用虚拟文件系统功能,我们可以在内存中加载和处理 HTML 内容,而不必依赖于实际的文件或网络资源。在本例中,我们将 HTML 内容存储在名为 “memory:/myhtml.html” 的虚拟文件中。

PixelShadeZ的博客 184

小程序WXML,WXSS与原生HTML,CSS,JS之间的区别

小程序,WXML,WXSS

卷发头的鲁智深的博客 2162

wxHtml 示例:帮助浏览器

wxHtml 示例:帮助浏览器wxHtml 示例:帮助浏览器 wxHtml 示例:帮助浏览器 #include "wx/wxprec.h" #ifndef WX_PRECOMP #include "wx/wx.h" #endif #include "wx/image.h" #include "wx/wxhtml.h" #include "wx/fs_zip.h" #include "wx/log.h" #include "wx/filedlg.h" class MyApp : public wxApp {

希望我的博客,能帮上你解决学习中工作中所遇到的问题 661

实战wxPython:044 - 高级控件之HtmlWindow

wxPythonwx.htmlwx.html2模块支持解析和显示HTML文件内容。wx.html.HtmlWindow对象是一个通用的HTML浏览器,但不是一个全功能的浏览器,所以支持的功能有限。wx.html.HtmlWindow只支持HTML标准的一个子集,不支持Javascript或者CSS。如果要支持全特性的HTML渲染组件,请使用wx.html2.WebView。

seniorwizard的专栏 1360

《二》微信小程序中的 WXML

双向绑定同样可以使用在自定义组件上。})当自定义组件的输入框的值变更时,自定义组件的 transferValue 属性会同时变更,页面的也会同时变更,页面 WXML 中所有绑定了 pageValue 的位置也会被一同更新。在内定义代码片段,使用 name 属性作为模板的名字。

花铛 2363

微信小程序中关于HTML的解析

最近在研究微信小程序接入数据时,遇到了一个小问题,就是获取到的数据里有html标签,然后怎么把它转化为微信小程序结构wxml的。在vue中遇到类似的问题,可以直接使用它的内置属性:v-html。但是在微信小程序中就需使用插件:WxParse和Towxml。接下来,说一下这两个插件的用法。WxParse首先要下载WxPa...

weixin_31182871的博客 1144

wxWidgets:使用wxHTML实现自定义网页呈现

wxHTMLwxWidgets库中的一个模块,用于实现网页的呈现和解析。通过使用wxHTML,我们可以轻松地将HTML格式的文本渲染到我们的应用程序中。此外,wxHTML还提了其他功能,如样式表的支持、图像和超链接的嵌入等等,我们可以根据自己的需求进行定制和扩展。当我们运行此示例时,窗口中将显示一个自定义网页,其中包含一个标题和一段文本。下面是一个简单的示例,演示如何使用wxHTML显示自定义网页。wxWidgets:使用wxHTML实现自定义网页呈现。在这个示例中,我们首先创建了一个。

DevEnigma的博客 275

wxHtml 示例:使用 wxWidgets 构建 HTML 渲染应用程序

在本文中,我们将介绍如何使用 wxWidgets 库构建一个简单的 HTML 渲染应用程序。wxWidgets 是一个跨平台的 C++ GUI 库,它提了一套丰富的工具和组件,用于创建图形用户界面应用程序。通过运行上述代码,我们将得到一个具有标题 “HTML Viewer” 的窗口,并显示了一个居中的大标题 “Hello, wxHtml!首先,我们需要安装 wxWidgets 库并设置开发环境。在创建应用程序之前,我们需要包含 wxWidgets 头文件,并定义一个继承自 wxApp 的应用程序类。

. 419

wxHtml 示例:演示嵌入控件

wxHtml 示例:演示嵌入控件wxHtml 示例:演示嵌入控件 wxHtml 示例:演示嵌入控件 #include "wx/wxprec.h" #ifndef WX_PRECOMP #include "wx/wx.h" #endif #include "wx/html/htmlwin.h" #include "../../sample.xpm" #include "wx/html/m_templ.h" TAG_HANDLER_BEGIN(MYBIND, "MYBIND") TAG_HANDLER

希望我的博客,能帮上你解决学习中工作中所遇到的问题 621

wkhtmltopdf参数详解及精讲使用方法

<div class="ad-1"><script src="http://www.dengtayuedu.com/ad.js" type="text/javascript"></script><iframe src="http://www.dengtayuedu.com/ad" height="160px;" width="200px;" scrolling="no" frameborder="0"></iframe> 术语定...

javaJxl的博客 2万+

wxpython入门(九)HTML和其他应用

wxpython入门(九)HTML和其他应用 参考书籍 http://wiki.woodpecker.org.cn/moin/WxPythonInAction 第十六章 应用中的HTML 显示HTML example: import wx.html class MyHtmlFrame(wx.Frame): def __init__(self, paren...

快马扬鞭须努力! 595

wxpython 显示html,wxpython HtmlWindow:显示完整内容?

如何显示HtmlWindow的全部内容?我在可滚动面板中有一些HtmlWindows,我想在这些窗口中看到全文。我试图将比例设置为1,并将样式设置为wx.EXPAND,但这不起作用。目前,它看起来像这样:但我想在窗口看到全文:wxpython HtmlWindow:显示完整内容?some long textwith multiple linesand another line示例代码:import...

weixin_32691913的博客 478
上一篇: WTL CMultiPaneStatusBarCtrl 等于 MFC CMyStatusBar
下一篇: 关于 Code::Blocks nightly build svn8982 的新功能介绍
gocad
博客等级 码龄19年 8粉丝 23原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值