Python论坛  - 讨论区

标题:[python-chinese] TreeCtrl中处理列表级别

2004年09月26日 星期日 23:33

Lee jundong leejd80 at gmail.com
Sun Sep 26 23:33:33 HKT 2004

最近用到了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

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2004年09月27日 星期一 07:13

xl g gxl117 at yahoo.com.cn
Mon Sep 27 07:13:39 HKT 2004

注意一下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/


[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2004年09月27日 星期一 08:48

limodou limodou at gmail.com
Mon Sep 27 08:48:47 HKT 2004

在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!

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2025

    京ICP备05028076号