在使用wx.lib.customtreectrl的过程中,如果在它的构造函数中指定了TR_AUTO_CHECK_CHILD属性,那么在生成的树中如果选择的树选项有子选项的话,那么这些子选项也会被选中。这本来是一个很实用的功能,但是使用以后发现有一个问题,就是子选项被选中但是并不触发相应的EVT_TREE_ITEM_CHECKED事件,使得在程序中需要自己手动去罗列所有的子选项。
这就需要使用customtreectrl的GetNext(self,item)方法(或者是使用诸如GetFirstChild或者GetLastChild此类的方法),需要注意的是这些函数返回的并不是直接的GenericTreeItem的实例,而是一个数组,数组的第一项是实际的GenericTreeItem实例,而数组的第二项是一个cookie参数,在遍历某个item下的所有选项时会用到这个参数,比如下面的代码
python 代码
- child, cookie = self.GetFirstChild(item)
- while child:
- # do something with child
- child, cookie = self.GetNextChild(item, cookie)