WxPython Notes (5) --- BoxSizer
一、代码获取
本节使用代码版本 7,提取代码的命令为
svn -r 7 co http://wxpy-study.googlecode.com/svn/trunk/
二、BoxSizer
在 Notes (4) 中曾提到过,leftPanel 中放了一些东西,它们是
* 一棵树,作为 demo 的目录
* 一行文本
* 一个搜索框
在本节中,我们将利用 BoxSizer 把这三个对象组织到 leftPanel 中。这些对象,如搜索,要捆绑回调函数才有用。那些内容我们后面再讨论。
树的类型是从 wx.TreeCtrl 和 ExpansionState 继承下来的。后者是 mixins 中的一个模块。mixin 的含义是混合,可能是想把若干个类混合成一个新类。ExpansinState 与 TreeCtrl 混合可以支持展开状态的记录。
* form wx.lib.mixins.treemixin import ExpansionState
加载模块;
* Class MyTree(ExpansionState, wx.TreeCtrl)
MyTree 是两个类的继承。目前这个类还是空的,只调用了 wx.TreeCtrl 的初始化函数;
* self.filter = wx.SearchCtrl (left.Panel)
搜索框
* self.filter.ShowCancleButton(True)
修饰一下,带 X 的搜索框
下面用 BoxSizer 把这些对象整合到 leftPanel 中去。
* leftBox = wx.BoxSizer(wx.VERTICAL)
垂直叠放
* leftBox.Add(self.tree, 1, wx.EXPAND)
wx.EXPAND 使得 tree 霸道一些,占据更多空间。数字指定扩张方向,1 是双向(下,右)扩展。可以改成 0 对比效果。
* leftBox.Add(wx.StaticText(leftPanel, label="Filter Demos:"), 0,
wx.TOP|wx.LEFT, 5)
* leftBox.Add(self.filter, 0, wx.EXPAND|wx.ALL, 5)
* leftPanel.SetSizer(leftBox)
为 leftPanel 设置 Sizer