供初学者使用的 wxHTML
2008-09-30 13:07:27 来源:WEB开发网如果您以前使用过 wxPython 或任何其它 Python 图形工具箱,那么您可以发现我们做的所有事情就是向面板添加另一个容器并将四个按钮置于其中,带有对 exHtmlPanel 类中所添加的方法的回调函数。基础 wxHtml 类巧妙地为我们管理历史,因此, OnBack 和 OnForward 仅仅是对基础方法的调用。
假定读到这些时您已一直在使用 Python 解释器,那么您可能注意到:如果关闭应用程序,它从不将控制返回给控制台。这个问题解决起来很简单,但我们可能应该添加一个菜单栏来提供具有退出选项的文件菜单:
清单 4. 修改 exFrame 以添加带有退出的文件菜单
class exFrame(wxFrame):
def __init__(self, parent, ID, title):
wxFrame.__init__(self, parent, ID, title, wxDefaultPosition, wxSize(600,750))
panel = exHtmlPanel (self, -1, self)
mnu_file = wxMenu()
mnu_file.Append(101, "E&xit", "Exit the browser")
menuBar = wxMenuBar()
menuBar.Append(mnu_file, "F&ile")
self.SetMenuBar(menuBar)
EVT_MENU(self, 101, self.Exit)
def Exit(self, event):
self.Close(true)
当我们没有试图将它变为一个真正的浏览器的时候,我们在结尾处发现少了两个添加项:大多数浏览器都有状态栏,并且您可能注意到了没有绘制任何图像。下列对 exApp 、 exFrame 和 exHtmlPanel 的修改添加了一个状态栏以及所有来自 wxPython 的内置图像支持:
清单 5. 添加状态栏及图像支持
class exApp(wxApp):
def OnInit(self):
+ wxInitAllImageHandlers()
frame = exFrame(NULL, -1, "Example Browser")
frame.Show(true)
self.SetTopWindow(frame)
return true
class exHtmlPanel(wxPanel):
def __init__(self, parent, id, frame):
wxPanel.__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)
...
class exFrame(wxFrame):
def __init__(self, parent, ID, title):
wxFrame.__init__(self, parent, ID, title, wxDefaultPosition, wxSize(600,750))
panel = exHtmlPanel (self, -1, self)
+ self.CreateStatusBar()
+ self.SetStatusText("Default status bar")
...
现在,基本浏览器的功能应该齐全了。wxPython 的高级特性允许您创建自己的标记,可以通过定制代码来处理这些标记以执行您选择的任何操作。对您自己的可定制嵌入式浏览器的控制为增强的报表生成及联机帮助提供了无限的可能性。
这些代码本身就可以轻易为任意数目的应用程序提供基础,并且 ― 没有理由将您限制在仅仅提供联机帮助上。请自由使用这些类,看看能让它们发生什么有趣的行为。:-)
更多精彩
赞助商链接