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