2004年09月26日 星期日 23:33
最近用到了TreeCtrl组件,由于对wxPython不是很熟悉,因此问题比较多。现在遇到一个问题,就是如何获取TreeCtrl中的level问题。即根目录是0,直属子节点为1,依次往下加。在VCL中,是可以直接获取其level的,但是wxPython好像没有带这种功能的函数(可能是我没有找到)。由于我的程序是要根据level来决定哪些菜单可用的,因此level的获取是比较重要的(当然也可以使用别的方法来实现,但是好像这样做是最省事的)。我写了一个函数,使用了递归的方法,不过很不幸,该函数运行结果不正确,大家帮我看看吧,谢谢了:) def GetItemLevel (self, item):#TODO:需要完成获取item的层数功能 """ """ if self.GetRootItem() != item: item = self.GetItemParent(item) self.GetItemLevel(item) self.level = self.level + 1 else: level = self.level self.level = 0 return level 这个函数的写法是参考C的,python的递归不知道能否这样使用。运行结果只有根层的是正确的,别的都是错误的,返回了None,怀疑递归的时候处理错误了。还请大家指点。 limodou,有时间可以帮我看看level问题吗? -- My Blog >> http://leejd.cndev.org My MSN >> leejd at 263.net My QQ >> 9847243 My Email >> leejd80 at Gmail.com
2004年09月27日 星期一 07:13
注意一下return语句的缩进,它应该与if对齐。否则的话只有else时才返回level,也就是只返回item为根时的结果。 --- Lee jundong <leejd80 at gmail.com> 的正文: > 最近用到了TreeCtrl组件,由于对wxPython不是很熟悉,因此问题比较多。现在遇到一个问题,就是如何获取TreeCtrl中的level问题。即根目录是0,直属子节点为1,依次往下加。在VCL中,是可以直接获取其level的,但是wxPython好像没有带这种功能的函数(可能是我没有找到)。由于我的程序是要根据level来决定哪些菜单可用的,因此level的获取是比较重要的(当然也可以使用别的方法来实现,但是好像这样做是最省事的)。我写了一个函数,使用了递归的方法,不过很不幸,该函数运行结果不正确,大家帮我看看吧,谢谢了:) > > def GetItemLevel (self, > item):#TODO:需要完成获取item的层数功能 > """ > """ > if self.GetRootItem() != item: > item = self.GetItemParent(item) > self.GetItemLevel(item) > self.level = self.level + 1 > else: > level = self.level > self.level = 0 > return level > > 这个函数的写法是参考C的,python的递归不知道能否这样使用。运行结果只有根层的是正确的,别的都是错误的,返回了None,怀疑递归的时候处理错误了。还请大家指点。 > > limodou,有时间可以帮我看看level问题吗? > > > > -- > My Blog >> http://leejd.cndev.org > My MSN >> leejd at 263.net > My QQ >> 9847243 > My Email >> leejd80 at Gmail.com > > _______________________________________________ > python-chinese list > python-chinese at lists.python.cn > http://python.cn/mailman/listinfo/python-chinese > _________________________________________________________ Do You Yahoo!? 150万曲MP3疯狂搜,带您闯入音乐殿堂 http://music.yisou.com/ 美女明星应有尽有,搜遍美图、艳图和酷图 http://image.yisou.com 1G就是1000兆,雅虎电邮自助扩容! http://cn.rd.yahoo.com/mail_cn/tag/1g/*http://cn.mail.yahoo.com/event/mail_1g/
2004年09月27日 星期一 08:48
在NewEdit的做法是将每个level在插入结点时,存到SetPyData()中,也就是自已去管理。用的时候再取出来即可。 On Sun, 26 Sep 2004 23:33:33 +0800, Lee jundong <leejd80 at gmail.com> wrote: > 最近用到了TreeCtrl组件,由于对wxPython不是很熟悉,因此问题比较多。现在遇到一个问题,就是如何获取TreeCtrl中的level问题。即根目录是0,直属子节点为1,依次往下加。在VCL中,是可以直接获取其level的,但是wxPython好像没有带这种功能的函数(可能是我没有找到)。由于我的程序是要根据level来决定哪些菜单可用的,因此level的获取是比较重要的(当然也可以使用别的方法来实现,但是好像这样做是最省事的)。我写了一个函数,使用了递归的方法,不过很不幸,该函数运行结果不正确,大家帮我看看吧,谢谢了:) > > def GetItemLevel (self, item):#TODO:需要完成获取item的层数功能 > """ > """ > if self.GetRootItem() != item: > item = self.GetItemParent(item) > self.GetItemLevel(item) > self.level = self.level + 1 > else: > level = self.level > self.level = 0 > return level > > 这个函数的写法是参考C的,python的递归不知道能否这样使用。运行结果只有根层的是正确的,别的都是错误的,返回了None,怀疑递归的时候处理错误了。还请大家指点。 > > limodou,有时间可以帮我看看level问题吗? > > > -- > My Blog >> http://leejd.cndev.org > My MSN >> leejd at 263.net > My QQ >> 9847243 > My Email >> leejd80 at Gmail.com > > > _______________________________________________ > python-chinese list > python-chinese at lists.python.cn > http://python.cn/mailman/listinfo/python-chinese > > > -- I like python!
Zeuux © 2025
京ICP备05028076号