在python中修改节点树的结构(应用程序cherrytree)

时间:2018-11-29 07:36:21

标签: python

我用cherrytree做笔记,这是一个用python编写的分层笔记应用程序。快捷方式允许插入日期节点,树中日期节点的结构如下:

├─ year
│  └─ month1
│  │  └─ day1
│  │  └─ day2
│  └─ month2
├─ year2
├─ a user node

我想将日期节点插入名为“ journal”或诸如此类的父节点,如下所示:

├─ journal
│  └─ year1
│  │  └─ month1
│  │  │  └─ day1
│  │  └─ month2
│  └─ year2
├─ a user node

core.py 中的函数 node_date 是:

    def node_date(self, *args):
    """Insert Date Node in Tree"""
    now_year = time.strftime("%Y").decode(locale.getlocale()[1])
    now_month =time.strftime("%B").decode(locale.getlocale()[1])
    now_day = time.strftime("%A %d %B %Y").decode(locale.getlocale()[1])
    #print now_year, now_month, now_day
    if self.curr_tree_iter:
        curr_depth = self.treestore.iter_depth(self.curr_tree_iter)
        if curr_depth == 0:
            if self.treestore[self.curr_tree_iter][1] == now_year:
                self.node_child_exist_or_create(self.curr_tree_iter, now_month)
                self.node_date()
                return
        else:
            if self.treestore[self.curr_tree_iter][1] == now_month\
            and self.treestore[self.treestore.iter_parent(self.curr_tree_iter)][1] == now_year:
                self.node_child_exist_or_create(self.curr_tree_iter, now_day)
                return
            if self.treestore[self.curr_tree_iter][1] == now_year:
                self.node_child_exist_or_create(self.curr_tree_iter, now_month)
                self.node_date()
                return
    self.node_child_exist_or_create(None, now_year)
    self.node_date()

有人可以帮助我适应它吗?我不是开发人员(我在python中的技能无法以我喜欢的方式修改now_day日期格式...),我想将注释和日记节点分开,而不必手动移动由...自动创建的日期节点捷径。谢谢您的帮助。

1 个答案:

答案 0 :(得分:1)

我在project repo issue上获得了帮助。我的node_date方法现在是:

def node_date(self, *args):
    """Insert Date Node in Tree"""
    top_node = "journal"
    now_year = time.strftime("%Y").decode(locale.getlocale()[1])
    now_month =time.strftime("%Y-%B").decode(locale.getlocale()[1])
    now_day = time.strftime("%A %d %B %Y").decode(locale.getlocale()[1])
    #print now_year, now_month, now_day
    self.node_child_exist_or_create(None, top_node)
    self.node_child_exist_or_create(self.curr_tree_iter, now_year)
    self.node_child_exist_or_create(self.curr_tree_iter, now_month)
    self.node_child_exist_or_create(self.curr_tree_iter, now_day)

正如我对贡献者说的那样,我不明白为什么在他的解决方案如此简单的情况下,为什么所有这些项目代码都包含在项目代码中,但是目前看来,它可以按照我想要的方式工作。