wxPython TreeCtrl 不显示根节点但保留箭头
我正在用wxPython制作一个Python树状图可视化工具。它的使用方式是这样的:
show_tree([ 'A node with no children', ('A node with children', 'A child node', ('A child node with children', 'Another child')) ])
一开始运行得很好,但它显示了一个值为“树”的根节点。我本来想让它创建多个根节点,但后来发现这样是不允许的。所以我又把代码改回来了,不过把这行:self.tree = wx.TreeCtrl(self)
改成了这样:self.tree = wx.TreeCtrl(self, style=wx.TR_HIDE_ROOT)
。这样做是有效的,但它没有显示旁边的小箭头,所以你就不知道哪些节点有子节点。请问有没有办法隐藏根节点,但保留这些箭头呢?注意:我是在Mac上使用Python 2.5和wxPython 2.8.4.0。
2 个回答
1
你在找的东西可能是 wxTR_LINES_AT_ROOT
吗?
来自 wxWidgets 的文档:
wxTR_LINES_AT_ROOT Use this style to show lines between root nodes. Only applicable if wxTR_HIDE_ROOT is set and wxTR_NO_LINES is not set.
注意:这个是针对 C++ 的 WX,不是 Python,但应该是类似的
9
注意:当我发这个的时候,我没有意识到可以给树形结构应用多种样式。
经过各种尝试,我发现是将 TR_HIDE_ROOT 和 TR_HAS_BUTTONS 这两个样式结合使用,才能隐藏根节点,同时在左侧显示箭头,这样就可以折叠和隐藏有子节点的节点了。最后我用的代码是:
self.tree = wx.TreeCtrl(self, style=wx.TR_HAS_BUTTONS + wx.TR_HIDE_ROOT)