wxPython TreeCtrl без показа рута и отображения стрелок

Я делаю визуализатор дерева Python, используя wxPython. Это будет использоваться так:

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), Это работало, но не показывало маленькие стрелки сбоку, чтобы вы не знали, у каких узлов есть дети. Есть ли способ скрыть корневой узел, кроме как сохранить стрелки. Примечание: я использую Python версии 2.5 и wxPython версии 2.8.4.0.

2 ответа

Решение

Примечание. Когда я публиковал это, я не осознавал, что вы можете применять несколько стилей к деревьям.
Попробовав все, я понял, что это комбинация TR_HIDE_ROOT и TR_HAS_BUTTONS, которая позволяет скрыть корень, в то же время показывая стрелки с левой стороны, которые позволяют вам сворачивать и скрывать узлы с дочерними элементами. Это код, который я в конечном итоге использовал:

self.tree = wx.TreeCtrl(self, style=wx.TR_HAS_BUTTONS + wx.TR_HIDE_ROOT)

Мог wxTR_LINES_AT_ROOT быть тем, что вы ищете?

Из документации wxWidgets:

wxTR_LINES_AT_ROOT
  Используйте этот стиль, чтобы показать линии между корневыми узлами.
  Применимо только если wxTR_HIDE_ROOT установлен
  и wxTR_NO_LINES не установлен.

Отказ от ответственности: это для WX в C++, а не Python, но это должно быть эквивалентно

Другие вопросы по тегам