wxPython TreeCtrl 不显示根节点但保留箭头

4 投票
2 回答
2604 浏览
提问于 2025-04-15 23:16

我正在用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)

撰写回答